macOSでbashスクリプトを見つけるためにpgrepする方法(またはバックグラウンドで実行されているスクリプトをプログラムで強制終了する方法)?

NNNコンプレックス

バックグラウンド プロセス (macOS 上) として実行されている bash スクリプトをプログラムで強制終了しようとしています。私が今決めた方法pgrepは、スクリプトの名前を指定し、PID 値をkill関数に渡すことです。

注:これを行う方法についてより良い提案がある場合は、遠慮なく提供してください。

私が直面している問題は、macOS では、プロセスの名前がスクリプトの名前だけでなく、/bin/bash /Users/...../[scriptname]. さらにpgrep [scriptname]、PID を取得することはできません。pgrep bash代わりに取得する必要があり、結果として複数の結果が得られることがよくあります。

i)このスクリプトをpgrep適切に使用する方法、killまたはii)これを行うためのより明白でクリーンな方法があるかどうかについて誰かが推奨していますか?

注: Lubuntu で同じスクリプトを実行すると/bin/bash、名前の一部として完全なディレクトリが含まれず、代わりに[scriptname]. したがってpgrep [scriptname]、意図したとおりに動作します。

シーマス

はい - macOS はこれに関して非常に面倒ですが、私はこれについて適切な方法pgrep考えていますpkill

% pgrep -U 502 -f sleepforever.sh
43894

いくつかの説明が順番になるかもしれません:

  • -U 502から取得した私の実際のユーザーIDですid

  • sleepforever.sh これをテストするために作成したスクリプトです:

    #!/bin/bash
    while :
    do
        sleep 10
    done
    

しかし、pgrep実際にできることは、pid. 仕事を完了するには、次を使用しますpkill- 引数の多くを次のものと共有しますpgrep

% pkill -U 502 -f sleepforever.sh
%

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ