最初のコマンドを実行し続けながらチェーン内の2番目のコマンドをブロックするにはどうすればよいですか?

最初のコマンドを実行し続けながらチェーン内の2番目のコマンドをブロックするにはどうすればよいですか?

昨日は寝る前に長い作業を始めましたが、起きる前に終わりそうで使っていました。

./command && sudo poweroff

システムはパスワードを要求しないように構成されているため、sudo poweroffこのコマンドが完了した後にシステムをシャットダウンする必要があります。

しかし、まだ実行中なので、別のタスクにシステムを使用したいと思います。バックグラウンドでコマンドを実行することは問題ではありませんが、システムがいつでもシャットダウンする可能性があります。

最初のコマンドが完了するまで実行できるようにしながら、コマンドが実行されるのをzsh防ぐ方法はありますか?poweroff

このような場合でも、/etc/sudoersパスワードの入力を求めるようにファイルを編集すると便利でしょうか?

答え1

あなたの意見に記載されているように、インタラクティブシェルの前景でまだ実行されているので、を押すことができるはずですCtrl+Z

これにより操作が中断されます./command。 SIGTSTP信号が実際にブロックされ、この場合(低い可能性)、終了(0)が選択されていない./command限り、終了ステータスは0ではないため(128 + SIGTSTP、通常148)sudo poweroff実行されません。

./commandその後、フォアグラウンドまたはバックグラウンドで使用または再開できます。fgbg

以下を使用してこれをテストできます。

sleep 10 && echo poweroff

を押して後で使用/復元するとpoweroff出力がないことに注意してください。Ctrl+Zfgbg

または

sleep 10 || echo "failed: $?"

failed: 148クリックして確認してくださいCtrl+Z

これはzshstartに有効で、使用すると想定しています./command && sudo poweroff。他のシェルでは機能しない可能性があり、サブシェルや複合(./command && sudo poweroff)コマンド{ ./command && sudo poweroff; }の一部などの他の方法で起動した場合(他zshのほとんどのシェルとは異なり、サブシェルに変換されるため、そのまま再開できます)、一時停止したときに全体でした。

答え2

一時的に /sbin/poweroff の名前を変更できます。

答え3

最初のコマンドが完了するまで実行できるようにしながら、zshがpoweroffコマンドを実行しないようにする方法はありますか?

gdb実行中のプロセスのメモリを編集するようなものを使用しないと、これは可能ではないと思います。

この場合、パスワードの入力を求めるように/etc/sudoersファイルを編集することはまだ役に立ちますか?

役に立ちます。

関連情報