Sheet 1
openwrt命令记录
  openwrt配置命令
    minicom登录openwrt
      sudo minicom -D /dev/ttyUSB0
    查看usb串口信息
      la /dev/ttyUSB0
    查看无线网卡设置
      cat /etc/config/wireless
    重载network
      /etc/init.d/network reload
    中继器配置
      cat /usr/bin/apcli_connect.sh
      ./apcli_connect.sh disable a_rh a_5g_rh
      ./apcli_connect.sh restart
    ssh登录配置
      sshpass -p mzszR10 scp old root@172.16.1.6:/usr/bin
      sshpass -p mzszR10 ssh root@192.168.36.249
      ssh root@192.168.232.1
    查询openwrt版本号
      cat /etc/openwrt_version 版本号
    r13/r10编译
      r13编译: /meizu路径下: ./build.sh
      r10编译： reboot or rm /tmp/ cache
        rm /tmp/luci-modulecache/ -rf
    luci配置命令
      lan口 转 wan口
        uci set network.lan.eth_port=wan
        uci get network.lan.eth_port
        uci commit
    小米代码路径
      /home/rh/my_code/miwifi_package_rom/usr/lib/lua/luci
      小米功能基础库路径
        /home/rh/my_code/miwifi_package_rom/usr/lib/lua/xiaoqiang
  git命令
    git remote add origin <server>
      远程添加仓库
    branch
      git branch -a 显示分支
      git checkout 切换分支
      git branch xxx 新建分支
      git checkout -b xxx 新建分支并切换到该分支
      git merge XXX
        将xxx分支合并到当前分支
      git branch -d xxx
        删除XXX分支
    git diff
      git diff master test
        比较两个分支的差异
      git diff test
        所在分支当前目录与ltest分支相应目录的差异
    撤消修改
      git checkout -- <filename>
        撤消该文件的修改
      git reset --hard HEAD
        撤消暂存区修改,回退到head分支
        git reset HEAD file
      git reset --hard HEAD^
    git log
      git log -p
        显示每次提交内容的差异
  Luci API接口开发
    开发步骤
      （1）浏览器找到相关函数名
      （2）在luci/controller/admin/network.lua中找到相应函数
      （3）看懂，修改
      （4）移植到r13的api/index.lua或meizu目录的相应lua文件中
      （5）./build.sh
    logread -f 查看日志
    luci / lua
      基础实现
        lua UTC时间 转 时间戳
          调用linux shell实现
          local lue = require("luci.util").exec
          local t = lue([[date -d "2010-10-10 10:10:10" +%s]])
          print(tonumber(t))
        lua获取时间
          os.time()
            获取当前时间戳
          os.date
            获取当前时间字符串
        luci接收http get/post参数
          local close_time = luci.http.formvalue("close_time")
        将table变量转为json数据
          luci.http.write_json(table)
        sleep 1s
          posix.sleep(1)
        lua调用shell
          exec_cmd_in_sh(cmd)
          local pid = nio.fork()
          nio.exec("/bin/sh", "-c", command)
        输出日志
          require "MZLog".log(3, command)
        Lua-多线程回调函数实现
        遍历字符串字符
        查找匹配字符串索引
          idx,_ = string.find(line, "up_timer")
      lua细节
        Lua-函数不可以重载
    shell
      crontabs & crond
        * * * * * echo "hello" >> /cron.txt
        命令
          crontab -u //设定某个用户的cron服务，一般root用户在执行这个命令的时候需要此参数
          crontab -l //列出某个用户cron服务的详细内容
          crontab -r //删除没个用户的cron服务
          crontab -e //编辑某个用户的cron服务
          crontab -d //删除当前的crontab任务
          crontab filename //重新载入crontab文件
            crontab /etc/crondtabs/root
            crontabs/root文件下写的定时任务是多线程运行，不按顺序执行
          crond start //启动服务
          crond stop //关闭服务
          crond restart //重启服务
          crond reload //重新载入配置
      sed命令
        sed -n '/hello/p' cron.txt 查询hello关键字，打印相应行
        sed '/hello/d' cron.txt 删除含hello的行，输出到屏幕（原文件没删除）
        sed -i '/hello/d' cron.txt 直接修改原文件
        移除空白行：
          sed -i '/^$/d' file
        在指定行前加#号，注释该行：
          sed -i '/tacb/s/^/#/g' /etc/crontabs/root
        取消#号，取消注释：
          sed -i '/hello/s/^#//' /etc/crontabs/root
          cat t.txt|sed -n -e 's/^#\(.*\)/\1/p'
    linux c
      killall watchcat
  linux常用命令
    grep -F "bind_router" ./* -Rn
      -F 匹配字符串
      -R 递归匹配
      -n 显示行号
    find . -name "xxx"
      查找文件名中包含“xxx”的文件
    vim
      ctags -R ./*
      ctrl + ] 查找具体函数
      ctrl + t 返回调用函数处
      ：Tlist 打开Taglist
      下一屏：ctrl + f
      上一屏：ctrl + b
    media
      lsusb
      传文件到u盘: /media
    linux升级
      sudo do-release-upgrade
      sudo apt-get update-manager
      内核升级
        linux-image-XXX-generic
        linux-headers-generic
    ncat 10.16.1.2 51232 -v -u