特定の時間にsu-edルートからログアウトする方法

特定の時間にsu-edルートからログアウトする方法

ユーザーがsu次に切り替えるとします。root

$ su
Password: 
bash-4.2# crontab -l

root特定の時間にこれらのユーザーをすべてログアウトするにはどうすればよいですか?

私が試したこと

わかりました。次のコマンドを使用してください。

bash-4.2# ps -A -u root | grep bash
 2303 tty1     00:00:00 bash
 2548 pts/0    00:00:00 bash
 3040 pts/0    00:00:00 bash
 3080 pts/2    00:00:00 bash

が所有するすべてのBashシェルを入手できますroot。しかし、によって生成されたものをどのように選択できますかsu? su-edシェルを実行すると、echo $$次の結果が表示されます。

bash-4.2# echo $$
3040

次に、次のことを試してください。

bash-4.2# kill 3040

rootしかし、それは皮を殺しません。また、1つを作成すると、cron job echo $$必要なPIDは提供されません。だからこれはうまくいきません。

今私は詰まっています。

ベストアンサー1

pkill -u 0 suall rootとして実行されているすべてのプロセスsu(これによりサブシェルが終了します)

以下で実行されているbashプロセスのみを終了したい場合su

for pid in $(pgrep -u 0 bash); do
  parent_pid=$(ps -o ppid= -p "$pid")
  parent_command=$(ps -o comm= -p "$parent")
  if [ "$parent_command" = "su" ]; then kill -HUP "$parent_pid"; fi
done

そう言えば、これはおそらく悪い考えでしょう。あなたが殺す樹皮が重要なことをしている場合はどうなりますか?

長時間放置されたシェルを殺すには、次のように設定します。TMOUT.bashrcたとえば、を使用すると、TMOUT=600bashは10分間入力がないと自動的に終了します。

あなたが達成したいものが何であるかを慎重に考えてください。シェルを終了しても解決しようとする問題は解決しない可能性があります。

おすすめ記事