0

最後にマウスを動かした時間に基づいて、OSX でアイドル状態のユーザーをログアウトする cron ジョブを作成する方法を見つけようとしています。OSX の組み込み機能は、マシン全体がアイドル状態の場合にのみ、全員をログアウトします。誰がアイドル状態であるかを知る唯一の方法は、「w」を使用することです。これにより、いくつかの列が表示され、そのうちの 1 つにアイドル時間が含まれます。そのフィールドからそれらの数値のみをパイプして残りを無視するにはどうすればよいですか? それを行う簡単な方法はありますか?

これをどのように書きますか:

1.コマンドwを発行

2.ユーザー名をチェックして、アイドル時間が 30 分を超えているかどうかを確認し、そうである場合は、コマンド ps -Ajc | を発行します。grep loginwindow を実行し、アイドル時間を超過したそのユーザーの loginwindow のユーザー名と pid を見つけて、sudo kill -9 "そのユーザーのログイン ウィンドウの pid が何であれ" を発行します。

このスクリプトから "whateverusernamehere" を除外します (そうすれば、ログインしたままになります)。

4

1 に答える 1

0

あなたがパイプについて尋ねたことは知っています。しかし、これを行う標準的な方法は次のとおりです。TMOUT 変数の使用を検討してください。

次のようなものをログイン プロファイルに追加します。

declare -r TMOUT=14400

これにより、14400 秒、4 時間非アクティブになった後、非アクティブな対話型ユーザーがログアウトされます。

あなたの解決策、特に -9 を殺すことは、一種の厳しいものであり、問​​題を引き起こす可能性があります。一部のユーザーがファイルを開いている可能性がありますが、メソッドはそれを検出せず、ユーザーを強制終了すると、ファイルが破損する可能性があります。

于 2013-05-08T18:15:07.280 に答える