3 回答
TA贡献1772条经验 获得超5个赞
使用bash 的作业控制将流程发送到后台:
Ctrl+ Z停止(暂停)程序并返回外壳。
bg
在后台运行它。disown -h [job-spec]
其中[job-spec]是作业编号(例如%1
第一个正在运行的作业;请使用jobs
命令查找您的编号),以便在终端关闭时不会终止该作业。
TA贡献1906条经验 获得超10个赞
假设由于某种原因Ctrl+ Z也无法正常工作,请转到另一个终端,找到进程ID(使用ps)并运行:
kill -SIGSTOP PID
kill -SIGCONT PID
SIGSTOP将暂停该过程并SIGCONT在后台继续该过程。因此,现在关闭两个终端都不会停止您的过程。
TA贡献1797条经验 获得超4个赞
从外壳程序中分离正在运行的作业的命令(=使之成为nohup)是disown一个基本的外壳程序命令。
从bash-manpage(man bash):
放弃[-ar] [-h] [jobspec ...]
如果没有选项,则会从活动作业表中删除每个作业规范。如果指定了-h选项,则不会从表中删除每个作业规范,而是将其标记为如果外壳程序收到SIGHUP则不会将SIGHUP发送给作业。如果不存在jobspec,并且-a和-r选项均未提供,则使用当前作业。如果未提供jobspec,则-a选项表示删除或标记所有作业;不带jobspec参数的-r选项将操作限制为正在运行的作业。除非jobspec没有指定有效的作业,否则返回值为0。
这意味着,一个简单的
disown -a
将从作业表中删除所有作业,并使它们不再工作
- 3 回答
- 0 关注
- 1147 浏览
添加回答
举报