使用&、nohup或screen/tmux可让Linux进程在后台运行,nohup能避免终端关闭时进程终止,输出可重定向至日志文件;通过ps aux结合grep查看进程,kill命令结束指定PID的进程,jobs仅管理当前会话后台任务。

让Linux进程在后台运行,简单来说,就是让它脱离你的当前终端,这样即使你关闭终端窗口,进程也能继续跑着。
解决方案:
最常用的方法是在启动命令后加上
&
符号。例如,你想让一个名为
my_script.sh
的脚本在后台运行,可以这样:
./my_script.sh &
这会立即返回一个进程ID (PID),你可以用这个PID来监控或结束进程。
但这样有一个问题,如果你的脚本需要读取标准输入,或者向标准输出/标准错误输出打印信息,而终端已经关闭,可能会导致一些问题。为了更稳妥,可以使用
nohup
命令。
nohup ./my_script.sh > my_script.log 2>&1 &
nohup
会忽略 HUP (hang up) 信号,也就是终端关闭时发送的信号。
> my_script.log
将标准输出重定向到
my_script.log
文件,
2>&1
将标准错误输出也重定向到标准输出(也就是
my_script.log
)。 这样,即使终端关闭,进程的输出也会被记录下来,方便你查看。
还有一个选择是使用
screen
或
tmux
。 这两个工具可以创建多个虚拟终端会话,你可以在这些会话中运行进程,然后“detach” 会话,让它们在后台运行。 稍后你可以重新“attach” 会话,查看进程的输出。
screen -S my_session ./my_script.sh# 按 Ctrl+a 然后按 d detach 会话screen -r my_session # 重新 attach 会话
tmux
的用法类似,但命令略有不同。
如何查看正在后台运行的进程?
使用
ps aux
命令可以查看所有正在运行的进程。
grep
命令可以过滤出你关心的进程。
ps aux | grep my_script.sh
输出会显示包含
my_script.sh
的进程信息,包括PID、用户、CPU占用率、内存占用率等等。
如果只想查看当前用户运行的进程,可以使用
ps -u your_username
。
如何结束后台运行的进程?
知道了PID,就可以用
kill
命令结束进程。
kill PID
例如,如果
my_script.sh
的PID是12345,那么可以执行
kill 12345
。
如果进程没有响应
kill
命令,可以使用
kill -9 PID
强制结束进程。 但是,强制结束进程可能会导致数据丢失或其他问题,所以尽量避免使用。
另外,如果进程是用
nohup
启动的,并且标准输出/标准错误输出被重定向到文件,那么结束进程后,可能需要手动删除这些文件。
jobs
命令也可以查看当前shell会话启动的后台进程,并使用
fg %job_number
将其调回前台。 但是,
jobs
命令只能管理当前shell会话启动的进程,对于使用
nohup
或
screen/tmux
启动的进程无效。
以上就是Linux怎么让进程在后台运行的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/203501.html
微信扫一扫
支付宝扫一扫