GNU/Linux >> Linux の 問題 >  >> Linux

Linux:所有されていないプロセスを表示して強制終了する

簡単に

& で そして disown プロセスの PID は変更しません。
ps -p <YOURPID> に表示されない場合 出力、もう実行されていません。
オーバーチェックできます echo $? を追加して ps の後 (または kill ) コマンド、プログラムが 0 とは異なる終了コードで終了するかどうかを確認します (通常は 1 ).

命令を理解する

  • 背景 :最後の & でコマンドを起動したとき バックグラウンドで送信します。
    これは次のことを意味します:

    • シェルのジョブ リストに存在します (例では [1] という数字です) %1 として参照できます; (コマンド jobs を試してください ).
    • fg でフォアグラウンドとバックグラウンドに表示できます と bg .
    • (まだ) "所有" です (親にリンクされた) シェルによる:シェルが SIGHUP を受け取った場合 SIGHUP を送信します プロセスにもシグナルを送ります。

      $ sleep 1h &
      [1] 10795
      $ jobs
      [1]+  running           sleep 1h & 
      $ ps -l -p 10795       
      F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
      0 S  1000 10795  8380  0  80   0 -  3107 hrtime pts/57   00:00:00 sleep
      
  • 勘当 :コマンド disown で シェルのジョブ リストからジョブを削除しますが、その PID は変更しません。

    $ disown
    $ jobs
          # <---- No jobs
    $ ps -l -p 10795
    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    0 S  1000 10795  8380  0  80   0 -  3107 hrtime pts/57   00:00:00 
    

    同じ PPID に注意してください (シェルはまだ存在します)。
    次に、シェルを殺します。

    $ kill 8380   # Here we kill the shell 
    $ ps -l -p 10795
    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    0 S  1000 10795  5339  0  80   0 -  3107 hrtime pts/57   00:00:00 sleep
    

    別の PPID があります 、5339ps の別の呼び出しで 、 ps -p 5339init であることがわかります インスタンス:

    $ ps -p 5339
    PID TTY          TIME CMD
    5339 ?        00:02:20 init
    

pstree :より迅速な方法です。

pstree で確認できます

disown の前 そしてバッシュを殺す コマンド:

$ pstree -s -p 10795 
init(1)───lightdm(1199)───lightdm(5259)───bash(8380)───sleep(10795)

disown の後 そしてバッシュを殺す :

$ pstree -s -p 10795 
init(1)───lightdm(1199)───lightdm(5259)───init(5339)───sleep(10795)

注: もちろん、あなたの場合のすべての PID は異なります...


ps auxf にない場合 、実行されていません。 kill 29144 を実行した場合 これは、プロセスが実行されていないことも意味します。


各プロセスには、/proc にフォルダーがあります。 pid のファイルシステム .フォルダーが存在しない場合、プロセスは実行されていません。

例えば

/proc/29144/

プロセス commandline を表示できます

cat /proc/29144/cmdline

出力例:

/usr/sbin/smbd

またはプロセスファイルのステータスを確認してください

stat /proc/29144/exe

出力例:

File: /proc/29144/exe -> /usr/sbin/smbd
  Size: 0               Blocks: 0          IO Block: 1024   symbolic link
Device: 3h/3d   Inode: 78497       Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-04-07 12:18:01.719011505 +0200
Modify: 2017-04-07 12:18:01.369010535 +0200
Change: 2017-04-07 12:18:01.369010535 +0200
 Birth: -

Linux
  1. Linuxでゾンビプロセスを強制終了する方法

  2. Linuxでゾンビプロセスを見つけて殺す方法

  3. Linux – -9プロセスを強制終了すべきではないのはいつですか?

  1. コマンドを使用してLinuxでプロセスを強制終了する方法は?

  2. Linux での kill コマンドの例

  3. Linux:ゾンビ プロセスを見つけて強制終了する

  1. killとkillallを使用したLinuxでのプロセスの管理

  2. Javaプロセスを強制終了するLinuxスクリプト.

  3. Linux でプロセスを一時停止/再開する方法