如何通过在CentOS上使用nohup命令来确保进程不被终止,使任务持续运行?
- 内容介绍
- 文章标签
- 相关推荐
前言的观点是,终端关闭导致任务中断的痛点
各位亲爱的小伙伴们。你们是否在CentOS服务器上遇到过这样的困扰:好不容易启动了需要长时间运行的脚本或程序,却因为网络波动、SSH连接超时、或者仅仅是误关了终端窗口,导致进程随之挂起终止?看着半途而废的任务,既浪费时间又让人抓狂。不过,今天我就来教大家如何使用 nohup 命令解决掉这个问题。让我们的工作能够持续进行,真正做到“人间清醒”,任务不掉线。
主要概念这方面,什么是 nohup?
nohup 是 “no hang up”的缩写。它的主要作用就是忽略 SIGHUP使指定的进程在使用者退出登录、关闭终端后依然能够继续在后台运行。简单它就是给程序加了一层“护身符”,让程序摆脱对终端会话的依赖。
标准语法与参数详解
基本语法格式
nohup Command &
- Command要运行的具体命令。
- Arg命令所需的参数。
- &关键符号表示将该进程放入后台运行。 如果没有它,进程虽忽略挂起信号。但仍会占据当前终端前台,无法继续输入其他指令。
常用搭配参数推荐
nohup python -u test.py &
- -u 参数: 强制 Python 使用无缓冲 I/O 模式。怎么说呢,这代表着标准输出和标准错误会实时写入日志文件。而不是等缓冲区满了才写入。痛点提示:生产环境排查 Bug 时如果没有 -u。你可能等半天看不到最新日志,甚至程序崩溃前最终几行关键报错丢失!
再看实战演示,以运行 test.py 为例
1. 启动持久化任务
在 CentOS 终端执行以下命令:
nohup python -u test.py &
执行后现象说明:
- 1234512345 是进程 PID。
- 默认情况下所有输出会被重定向到当前目录下的 nohup.out 文件中。
- 此时你可以安全地输入 exit 或直接关闭 Xshell/Putty/Terminal 窗口,任务依然在服务器后台默默跑着。
2. 自定义输出日志方法
生产环境建议显式指定日志文件,避免 nohup.out 过大或多任务混淆 :
nohup python -u test.py> my_task.log 2>&1 &;老实说,
-
> my_task.log: 标准输出重定向到指定文件。 -
2>&1: 错误输出合并到标准输出,方便按时间顺序排查问题。
说到常见管理操作,查看与停止后台进程
查看后台运行状态
启动后怎么确认它真的在跑?请用以下组合拳 :
ps aux | grep nohup
ps aux | grep test.py
netstat -ntlp | grep PID
停止/杀死后台进程
ps aux | grep test.py
kill PID
kill -9 PID
}
前言的观点是,终端关闭导致任务中断的痛点
各位亲爱的小伙伴们。你们是否在CentOS服务器上遇到过这样的困扰:好不容易启动了需要长时间运行的脚本或程序,却因为网络波动、SSH连接超时、或者仅仅是误关了终端窗口,导致进程随之挂起终止?看着半途而废的任务,既浪费时间又让人抓狂。不过,今天我就来教大家如何使用 nohup 命令解决掉这个问题。让我们的工作能够持续进行,真正做到“人间清醒”,任务不掉线。
主要概念这方面,什么是 nohup?
nohup 是 “no hang up”的缩写。它的主要作用就是忽略 SIGHUP使指定的进程在使用者退出登录、关闭终端后依然能够继续在后台运行。简单它就是给程序加了一层“护身符”,让程序摆脱对终端会话的依赖。
标准语法与参数详解
基本语法格式
nohup Command &
- Command要运行的具体命令。
- Arg命令所需的参数。
- &关键符号表示将该进程放入后台运行。 如果没有它,进程虽忽略挂起信号。但仍会占据当前终端前台,无法继续输入其他指令。
常用搭配参数推荐
nohup python -u test.py &
- -u 参数: 强制 Python 使用无缓冲 I/O 模式。怎么说呢,这代表着标准输出和标准错误会实时写入日志文件。而不是等缓冲区满了才写入。痛点提示:生产环境排查 Bug 时如果没有 -u。你可能等半天看不到最新日志,甚至程序崩溃前最终几行关键报错丢失!
再看实战演示,以运行 test.py 为例
1. 启动持久化任务
在 CentOS 终端执行以下命令:
nohup python -u test.py &
执行后现象说明:
- 1234512345 是进程 PID。
- 默认情况下所有输出会被重定向到当前目录下的 nohup.out 文件中。
- 此时你可以安全地输入 exit 或直接关闭 Xshell/Putty/Terminal 窗口,任务依然在服务器后台默默跑着。
2. 自定义输出日志方法
生产环境建议显式指定日志文件,避免 nohup.out 过大或多任务混淆 :
nohup python -u test.py> my_task.log 2>&1 &;老实说,
-
> my_task.log: 标准输出重定向到指定文件。 -
2>&1: 错误输出合并到标准输出,方便按时间顺序排查问题。
说到常见管理操作,查看与停止后台进程
查看后台运行状态
启动后怎么确认它真的在跑?请用以下组合拳 :
ps aux | grep nohup
ps aux | grep test.py
netstat -ntlp | grep PID
停止/杀死后台进程
ps aux | grep test.py
kill PID
kill -9 PID
}

