答案是:在Linux中,使用nohup command &可让程序忽略终端关闭信号并在后台运行,结合输出重定向能避免nohup.out文件膨胀,而jobs、ps和kill命令用于管理后台进程,对于需交互的长期任务,推荐使用screen或tmux实现会话重连与多窗口管理。

在Linux环境下,当我们希望一个程序在关闭终端后依然能继续运行,或者仅仅是想让它在后台默默工作而不阻塞当前会话时,通常会用到两种主要的机制:
&
nohup
&
nohup
nohup command &
在我看来,理解
&
nohup
&
这就是
nohup
nohup
nohup command
nohup
nohup.out
所以,如果你想要一个程序既在后台运行,又不怕终端关闭,那么最稳妥、也是我最常用的方式就是将两者结合起来:
nohup your_command_here > output.log 2>&1 &
这条命令的含义是:
nohup your_command_here
your_command_here
> output.log
output.log
2>&1
output.log
&
nohup
这样一来,你的程序就能在后台安安稳稳地跑着,即便你下班关机了,它也还在服务器上辛勤工作。
一旦你把程序扔到后台,自然会想知道它们过得怎么样,或者需要的时候怎么“管教”它们。这就像你把孩子送去幼儿园,总得知道怎么探视和接回家吧。
首先,对于通过
&
jobs
[1]+ Running sleep 600 & [2]- Running nohup python my_script.py &
这里的
[1]
[2]
fg %job_id
fg %1
Ctrl+Z
bg %job_id
bg %1
然而,
jobs
nohup
jobs
ps
ps
grep
ps -ef | grep your_command_here
这会显示包含
your_command_here
kill
kill PID
如果一个进程顽固不化,不响应
kill
kill -9 PID
但请注意,
kill -9
使用
nohup
nohup.out
nohup
nohup.out
解决这个问题的方法其实很简单,就是明确地将输出重定向到你指定的位置,或者干脆丢弃掉。
如果你根本不关心程序的输出,或者程序本身会将日志写入到特定文件,那么最直接的做法就是将标准输出和标准错误都重定向到
/dev/null
nohup your_command_here > /dev/null 2>&1 &
这样,程序的所有输出都会被丢弃,
nohup.out
但更多时候,我们是需要程序的日志的,只是不希望它们都挤在
nohup.out
nohup your_command_here > /var/log/your_app/app_$(date +%Y%m%d).log 2>&1 &
这样,每天的日志都会写入到一个新的文件中,方便你进行日志轮转和管理。当然,你也可以结合
logrotate
虽然
nohup &
这时候,
screen
tmux
screen
tmux
举个例子,如果你正在服务器上编译一个大型项目,或者运行一个需要你偶尔输入指令的Python脚本,又或者你想在同一个SSH连接下同时管理多个独立的终端窗口,
screen
tmux
nohup &
它们的学习曲线可能比简单的
nohup &
tmux
nohup &
nohup &
screen
tmux
以上就是如何在Linux中后台运行程序 Linux nohup与&符号区别解析的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号