Skip to content

后台运行

Screen

用于创建和管理多个终端会话

  • 创建:screen -S <session_name>
    • 不指定名字启动匿名会话
  • 查看:screen -ls
    • 列出当前系统上所有正在运行的screen会话及其状态(如是否已连接)。
  • 重新连接:screen -r <session_name_or_pid>
    • 如果只有一个会话,不需要指定会话id
  • 分离:screen -d <session_name>
    • 在会话外部断开指定的screen会话,但不会杀死会话中的任务。
    • 如果当前已经窗口依旧处于连接状态,会无法重新进入,通过这个在外部进行断开
  • 分离:按下Ctrl+a,然后松开,再按下d
    • 这将分离当前的screen会话,使其继续在后台运行,同时你可以断开与该会话的连接。
  • 关闭:screen -X -S <session_name> quit
    • 强制结束并退出指定的screen会话。
  • 切换screen会话中的窗口
    • 按下Ctrl+a,然后松开,再按下n:切换到下一个窗口。
    • 按下Ctrl+a,然后松开,再按下p:切换到上一个窗口。
    • 按下Ctrl+a,然后松开,再按下0-9之间的数字:直接切换到对应编号的窗口(如果有的话)。

定时任务

cron

  • 添加定时任务
    • 其中每种时间可以通过 a-b 指定连续的一段时间内执行,如 1 号 5 号都执行
    • 如果是不连续的多个时间,可以通过逗号分隔多个时间,如 1,3,5
    • 每个位置为 * 表示的是每个对应的时间都要执行,比如第一个为 * 表示每分钟执行
    • 每个位置为 */n 时表示每 n 个时间间隔执行一次,如第一个位置为 * /n 表示每 n 分钟执行一次
    • 注意,一般星期和月日的执行不会同时,否则会出现冲突,这个冲突是不被定义的
bash
crontab -e #编辑cron任务模式
i #默认文字编辑器为vim,按i字母键即可添加cron任务
30 3 * * * /usr/local/etc/rc.d/lighttpd restart #将命令代码放入,此命令意义为每天的03:30 重启apache
# 任务前面的五个位置分别对应 分、时、一个月中的第几天(1 - 31)、月份(1 - 12) 、星期中星期几 (0 - 6) (星期天 为0),
ESC #按ESC键退出编辑模式
:wq #键入:wq保存
systemctl restart cron #重启crontab服务
  • 查看当前用户的 crontab 文件:crontab -l
  • 编辑当前用户的 crontab 文件:crontab -e
  • 删除当前用户的 crontab 文件:crontab -r
  • 列出某个用户的 crontab 文件(需要有相应的权限):crontab -u username -l
  • 编辑某个用户的 crontab 文件(需要有相应的权限):crontab -u username -e

watch

  • watch 可以帮助实现定时输出的命令结果,比如 netstat 没有间隔输出结果的功能。
  • watch [-options] <command>
    • 切换终端:Ctrl+x 退出watch:Ctrl+g
bash
-n <num> watch 默认每2秒运行一下程序,可以用 -n 来指定间隔的时间  
-d       watch 会高亮显示变化的区域

正在精进