使用 nohup
命令的概述及案例
简介
nohup
是 Linux 和 Unix 系统中的命令,用于在后台运行进程并确保其在用户退出或关闭终端后继续运行。它能忽略挂断信号(SIGHUP),保证进程不因用户退出而终止。
基本语法
nohup COMMAND [ARG]... [ & ]
- COMMAND:执行的命令或脚本。
- [ARG]:命令的参数。
- &:可选,放入后台执行。
关键用法与示例
- 基本用法
nohup ./my_script.sh &
该命令将在后台运行 my_script.sh
脚本,输出记录在 nohup.out
文件中。
- 指定输出文件
nohup ./my_script.sh > my_output.log 2>&1 &
此命令将输出和错误信息重定向到 my_output.log
,而非默认的 nohup.out
。
- 与管道命令结合
nohup find / -name "*.log" | xargs rm -f > delete_logs.log 2>&1 &
命令查找并删除 .log
文件,日志记录在 delete_logs.log
中。
注意事项
- 后台执行:使用
&
放入后台,结合jobs
和bg
/fg
管理进程。 - 手动终止:使用
ps
查找进程 PID,kill
终止。 - 日志管理:建议长时间任务重定向输出到日志文件。
实际案例
- 后台运行长时间任务
nohup ./data_processing.sh > process.log 2>&1 &
后台运行 data_processing.sh
,输出重定向到 process.log
,终端关闭后任务继续运行。
- 批量文件处理并记录日志
nohup bash -c 'for file in /var/logs/*.log; do gzip $file; done' > compress_logs.log 2>&1 &
后台压缩 /var/logs/
中的 .log
文件,日志记录在 compress_logs.log
。
总结
nohup
是管理后台进程的重要工具,适用于长期任务,保证任务不因会话中断而终止。掌握 nohup
的使用,有助于提高任务管理的灵活性和可靠性。