本文共 1228 字,大约阅读时间需要 4 分钟。
在实际工作中,有时需要某些进程在后台运行。以下是一些常用的方法和技巧,帮助我们更高效地管理后台任务。
当我们计划让某个进程在后台运行时,通常需要确保它不会因挂断终端(HUP)信号而中断。以下是一些常用的方法:
使用 nohup
命令
nohup
的作用是让提交的命令忽略 HUP 信号。它非常适合用来运行需要长时间后台执行的脚本或程序。示例:nohup ./filename.sh > filename.log 2>&1 &
优势:
使用 setsid
命令
setsid
会在一个新的会话中运行命令,从而避免当前终端发出的 HUP 信号对进程造成影响。示例:setsid COMMAND [ARG]...
优势:
nohup
或 setsid
。结合 &
产生子shell
&
,可以将任务放置到后台运行。示例:(COMMAND [ARG]... &)
优势:
nohup
结合使用,如:nohup ./filename.sh > filename.log 2>&1 &
使用 screen
等工具
screen
是一个非常实用的工具,可以创建全屏虚拟会话终端。这样做的好处是,只有在手动输入 exit
才会退出会话。示例:screen -dmS {name} {script}
优势:
有时候我们已经启动了某个进程,但需要将它放置到后台运行。以下是一些常用的方法:
使用快捷键 Ctrl + z
Ctrl + z
用于暂停当前正在运行的进程。bg
命令将进程放到后台运行。示例:Ctrl + z bg
使用 fg
和 disown
fg {jobid}
用于将当前处于后台的进程放回前台。disown
命令用于移除当前终端下的后台进程。示例:jobs # 查看当前后台进程列表 fg 1 # 将第一个后台进程放回前台 disown -h 1 # 移除第一个后台进程
使用 reptyr
命令
reptyr
是一个可以用来将后台进程切换到当前终端的工具。示例:reptyr {pid}
优势:
screen
使用时,可以更灵活地管理后台任务。转载地址:http://hskfk.baihongyu.com/