端末が必要なときに実行中で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
シェルが拒否するプロセスはどうなりますか?
- (もっと重要なのは)どうやって再起動しますか?
出力は以下から来ます。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が予想PID(1225)と一致するシェルで実行されていることです。コメントで端末があると言っていましたが、「他のコマンド」が別のシェルを起動したようです。$$
実行中のシェルの名前を確認しましたかjobs
?