当我需要终端时,我正在运行apt upgrade
,所以ctrlz.当我尝试重新启动它时 ( fg
),它不会重新启动,因为它不再位于作业列表中 ( jobs
)。 (我没有,运行 disown)。然后我执行了ps
获取进程 ID。它显示进程已停止(如预期的那样),因此我执行了sudo kill -s SIGCONT pid
重新启动它,但什么也没发生。ps
显示该进程仍处于停止状态。没有错误消息。
我做了什么。
sudo apt upgrade
«wait a bit»
«ctrl-z»
«some other command» #can't remember, but nothing special.
fg #This command failed, no such job
jobs #No output
我试图修复它。
- 发送签名到
apt
发送签名到
sudo
shell 否认该进程发生了什么?
- (更重要的是)我如何重新启动它?
输出来自ps -l -p $(pgrep apt)
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 T 0 22884 22883 0 80 0 - 21617 - pts/1 00:00:01 apt
输出来自pstree -s -p $(pgrep apt)
systemd(1)───kdeinit5(1038)───ksmserver(1062)───yakuake(1153)───bash(1225)───sudo(22883)───apt(22884)
输出来自pgrep bash | xargs -n1 ps -l -p
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 1225 1153 0 80 0 - 8770 core_s pts/1 00:00:00 bash
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 3852 3849 0 80 0 - 8404 - pts/7 00:00:00 bash
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 4449 4445 0 80 0 - 8392 core_s pts/3 00:00:01 bash
⋮
想法:它与 stdout/stdin 失去联系了吗?它需要它吗?
系统 Debian、bash
#↳ bash --version
GNU bash, version 4.3.30(1)-release (x86_64-pc-linux-gnu)
#↳ uname -a
Linux delorenzi 3.16.0-5-amd64 #1 SMP Debian 3.16.51-3+deb8u1 (2018-01-08) x86_64 GNU/Linux
#↳ sudo --version
Sudo version 1.8.10p3
Sudoers policy plugin version 1.8.10p3
Sudoers file grammar version 43
Sudoers I/O plugin version 1.8.10p3
答案1
通常怀疑的罪魁祸首是诚实的混乱。最明显的检查位置是您正在jobs
从 PID 与预期匹配 (1225) 的 shell 运行。在评论中您提到您有终端,但我怀疑“其他命令”可能启动了另一个外壳程序?您是否确认$$
正在运行的 shell 的名称jobs
?