su -c
rootで複数のコマンドを実行したいです。これには追加のスクリプトを使用したくありません。
私は以下を試しました:
su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & " -c "ls -lh"
ただし、最初の項目だけが実行され、ls
最初の項目は実行されません。
私は以下を試しました:
su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & ; ls -lh;"
ところでセミコロンにエラーがあると出てきますね;
。
どうすればわかりますか?
答え1
このコマンドはうまく動作します。
su root -c "date; ls -lh"
しかし、このコマンドでは:
su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & ; ls -lh;"
&
以前はそのような経験があったため、;
エラーが発生します。コマンドを削除し&
てやり直してください。
または、次のようにコマンドを実行できます。
su root -c "(tcpdump -i wlan0 -s 1500 -w CCCCCC &); ls -lh"
答え2
〜のようにアヌババ、あなたの
su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & ; ls -lh;"
&
すぐに実行できないため、コマンドは失敗します
;
。シェルに直接コマンドを入力すると、これを確認できます。
true & true
働くtrue & ; true
動作しません
tcpdump
コマンドをバックグラウンドで実行するには、次のように;
削除します。
su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & ls -lh;"
;
(結局、どちらも必要ありませんが、病気ではありません)。
答え3
私はこのコマンドがあなたが望むものを得ると思いますnohup
... tcpdumpはバックグラウンドで実行されます(アンパサンドは必要ありません):
su root -c "nohup tcpdump -i wlan0 -s 1500 -w CCCCCC ; ls -lh"
答え4
&&
次のようにコマンドを区切るために使用されます。
$ su -c "ls && ls"