相关疑难解决方法(0)


究竟什么是“停止作业”,如“停止作业正在运行......”?

发出关闭命令后,有时会收到如下状态消息:

A stop job is running for Session 1 of user xy
Run Code Online (Sandbox Code Playgroud)

然后系统挂起一段时间,或永远取决于 ???

那么究竟什么是“停工”呢?

另外,为什么它有时会非常准确地估计所需的时间,而有时它可以永远运行?

shutdown systemd

42
推荐指数
1
解决办法
9万
查看次数

nohup 是否尝试安排程序没有控制终端?

吉尔斯

nohup 和 disown 都可以说是抑制 SIGHUP,但是方式不同。nohup 使程序最初忽略该信号(程序可能会改变这一点)。nohup 还尝试安排程序没有控制终端,这样当终端关闭时内核就不会发送 SIGHUP 信号。disown 纯粹是 shell 内部的;它导致 shell 在终止时不发送 SIGHUP。

$ nohup sleep 100 &
[1] 7882
nohup: ignoring input and appending output to 'nohup.out'
$ get-terminal-info-of-a-process.sh 7882
COMMAND                     CMD                         TT         PID  PPID CGNAME                      CGROUP                       PGID TPGID  SESS SESSION     OWNER
sleep 100                   sleep 100                   pts/5     7882  6780 systemd:/user.slice/user-10 7:pids:/user.slice/user-100  7882  7885  6780 c2          1000
$ tty
/dev/pts/5
Run Code Online (Sandbox Code Playgroud)

ed进程nohup仍然具有与调用 shell 相同的 tty: /dev/pts/5。所以我想知道Gilles所说的“nohup还尝试安排程序没有控制终端,这样当终端关闭时内核不会向它发送SIGHUP”是什么意思?

如果他说的是真的,如何nohup通过Linux API或系统调用函数实现将程序与控制终端分离?

谢谢。

linux system-calls nohup

3
推荐指数
1
解决办法
937
查看次数

标签 统计

nohup ×2

disown ×1

job-control ×1

linux ×1

shell ×1

shutdown ×1

system-calls ×1

systemd ×1