目的
- 让webdav服务在后台执行,并且可窗口观测命令反馈信息来判断程序是否运行,方便排错.
准备
- 先手工测试代码可正确执行
1 |
/media/TF4G/shusanjing/caddy/caddy_webdav -conf /media/TF4G/shusanjing/caddy/caddyfile.ini |
- 授予caddy文件777权限:
chmod 777 /media/TF4G/shusanjing/caddy/caddy_webdav
Tmux-终端复用器方式
类Screen风格使用,但更为方便操作.
- 新建tmux_webdav.sh脚本并授予777权限:
vi /media/TF4G/shusanjing/caddy/tmux_webdav.sh.
1 2 3 4 5 6 7 8 9 10 11 |
#!/bin/bash #tmux-session-name session="webdav" #new session tmux new-session -s $session -d #command tmux send-keys -t $session '/media/TF4G/shusanjing/caddy/caddy_webdav -conf /media/TF4G/shusanjing/caddy/caddyfile.ini' C-m echo "-------------------------------------" endDate=`date +"%Y-%m-%d %H:%M:%S"` echo "[$endDate] Successful" echo "-------------------------------------" |
- 给tmux_webdav.sh.权限
chmod 777 /media/TF4G/shusanjing/caddy/tmux_webdav.sh
- 路由器启动时自动执行脚本,
以下命令添加到路由器自定义脚本尾部:
1 2 3 |
## tmux执行webdav sleep 60 /media/TF4G/shusanjing/caddy/tmux_webdav.sh |
- 完
screen-终端复用器方式
screen-基础命令
在当前窗口创建webdav的窗口 > screen -S webdav
在后台创建webdav的窗口 > screen -dmS webdav
查询已经存在的窗口 > screen -ls
以bash.sh脚本方式调用screen
- screen脚本的缺点是可以创建相同名字的窗口,这样会让窗口管理混乱.tmxu则具有窗口名称唯一的优点,因此优先选择tmux.
- 如果我们直接在脚本里写 screen -S my_screen, 会导致脚本无法继续执行。为了使脚本执行下去,
创建screen-webdav.sh
1 2 3 4 5 6 |
screen_name=$"webdav" screen -dmS $screen_name cmd=$"/media/TF4G/shusanjing/caddy/caddy_webdav -conf /media/TF4G/shusanjing/caddy/caddyfile.ini'"; screen -x -S $screen_name -p 0 -X stuff "$cmd" screen -x -S $screen_name -p 0 -X stuff $'\n' |
screen 快捷键操作
- ctrl a + d,detach挂起窗口
- ctrl a + k,杀死当前窗口
- ctrl a + [,进入复制模式,这个用来翻屏
- ctrl a + A,修改当前窗口的名称
注意
这种方式发送的命令不能太长,否则会导致脚本卡住。
如果需要发送一条很长的命令,或者连续发送许多条命令,最好单独写一个脚本,发送一个脚本命令给screen,让screen执行新的脚本。
nohup-后台无窗口模式
- 特点:可后台执行,但没有查看状态窗口.
1 2 3 |
用途:不挂断地运行命令。 语法:nohup Command [ Arg … ] [ & ] nohup /mnt/sda1/opt/app/webdav/caddy_webdav -conf /mnt/sda1/opt/app/webdav/caddyfile.ini & |