nohup 是 Linux 中一个非常常用的命令,用于在后台运行进程并忽略挂起信号(SIGHUP),即使用户退出终端会话,进程也能继续运行

常见用法

1. 基本用法:

nohup command &

  • command:需要后台运行的命令。
  • &:非必须,表示让命令在后台运行。

输出:默认会将输出重定向到当前目录下的 nohup.out 文件,如果没有权限,会输出到 /home/username/nohup.out。

如果你省略 &:

命令会在前台运行,并且屏幕仍然显示其输出内容。

即使关闭终端,进程依然会继续运行(nohup 的功能保证了这一点),但你不能在同一终端中继续输入其他命令,除非该命令完成。

2. 重定向输出:

nohup command > output.log 2>&1 &

  • >:重定向标准输出。
  • 2>&1:将标准错误输出重定向到标准输出。

3. 查看运行状态:

使用 ps 或 jobs 查看后台进程:

ps aux | grep command

根据jobs的特性,建议使用 grep 查询

jobs -l

//任务编号、状态、命令和进程 ID

注意:jobs 是一个 shell 内建命令,它只能显示当前 shell 会话中启动的后台任务(即:由当前 shell 直接管理的进程)。当终端关闭时,与该终端相关的 shell 会话会终止,jobs 无法再访问这些任务的信息。

4. 终止进程:

kill -9 <pid>

5. 结合 shell 脚本:

nohup ./script.sh > log.txt 2>&1 &

场景示例

运行一个长时间的程序

nohup python long_script.py &

即使关闭终端,long_script.py 仍然会继续执行。

监控进程输出

可以通过查看日志文件实时跟踪:

开启另一个终端

tail -f output.log

 

作者 admin

百度广告效果展示