跳转至

第 16 章 脚本控制

约 198 个字 17 行代码 1 张图片 预计阅读时间 1 分钟

信号、后台作业、nice/renice 与脚本自启。

16.1 信号

信号 默认 含义
SIGINT (2) 终止 Ctrl+C
SIGQUIT (3) 终止+core Ctrl+\
SIGKILL (9) 终止 不可捕获
SIGTERM (15) 终止 kill 默认
SIGHUP (1) 终止 终端断开
Bash
kill -l            # 列出信号
trap 'cleanup' SIGINT SIGTERM

16.2 后台与作业控制

Bash
cmd &              # 后台
jobs               # 列表
fg %1              # 前台
bg %1              # 后台继续

16.2.1 nohup 与 disown

Bash
nohup long_cmd > out.log 2>&1 &    # SSH 断开仍运行
disown -h %1                       # 从 jobs 表移除,SIGHUP 不杀
setsid cmd                         # 新会话运行

16.3 优先级

Bash
nice -n 10 cmd     # 降低优先级(nice 值越大越低)
renice -n 5 -p PID

16.4 脚本自动化运行

  • croncrontab -e
Text Only
分 时 日 月 周 命令
0 2 * * * /path/script.sh
  • at:一次性定时
Bash
at 10:00
at> script.sh
Ctrl+D
  • systemd timer:现代替代 cron 的方式

crontab 示例

Text Only
PATH=/usr/local/bin:/usr/bin
0 2 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1
*/5 * * * * curl -sf http://localhost/health || mail -s alert admin@host

评论