`nohup` 是 Linux 系统中的一个命令,常用于在用户退出终端会话(例如注销或关闭终端)后保持指定进程运行。

使用 `nohup` 命令基本格式如下:

bash

nohup command > nohup.out 2>&1 &

linux中nohup命令  第1张

解释一下这个例子的几个元素:

`command`: 你希望在后台运行并且不受用户退出会话影响的程序名称;

`>` 符号:将输出内容重定向;

`nohup.out` 文件名,这是用来保存标准输出和标准错误信息的文件名称;

linux中nohup命令  第2张

`2>&1` 表示同时将标准输出和标准错误写入 `nohup.out`;

`&` 把任务放入背景执行。

需要注意的是:

使用 nohup 后进程会被写入进程文件 `/var/run/utmp` 和登录会话文件 `/var/log/wtmp`, 因而即使您注销该账户或终止了与该终端的所有连接,此程序仍将运行。

linux中nohup命令  第3张

`nohup.out` 是如果未给出输出文件,则命令默认会把所有stdout输出存入文件nohup.out;

能否在没有 X 显示的情况下启动GUI 应用取决于你的具体配置和权限;

若需监控 nohup 产生的进程,使用ps ef |grep process_name 或 jobs 来进行管理。

举个具体的例子,如果你想后台无挂断的跑python程序可以这样:

linux中nohup命令  第4张

bash

nohup python myscript.py > output.txt 2>&1 &

这个命令将会运行 Python 脚本 myscript.py 并将输出重定向到output.txt 文件,并将该命令放入后台运行。