Saya ingin menggunakan su -c
untuk menjalankan sebagai root beberapa perintah sekaligus. Saya tidak ingin menggunakan skrip tambahan untuk ini.
Saya mencoba yang berikut ini:
su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & " -c "ls -lh"
tetapi hanya mengeksekusi ls
bukan yang pertama.
Saya mencoba yang berikut ini:
su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & ; ls -lh;"
tetapi dikatakan bahwa ada kesalahan dengan titik koma ;
.
Apakah Anda tahu bagaimana melakukan hal itu?
;
antaratcpdump
danls
perintah - tinggalkan saja tanda koma dan itu akan berfungsi.Seperti kata anubhava , milikmu
perintah gagal karena Anda tidak diizinkan untuk
&
segera diikuti oleh;
. Anda dapat melihat ini hanya dengan mengetikkan perintah langsung ke shell:true & true
bekerjatrue & ; true
tidak bekerjaJika Anda ingin
tcpdump
perintah dijalankan di latar belakang, hapus;
, seperti pada(dan Anda tidak perlu
;
pada akhirnya, juga, tetapi tidak sakit).sumber
Saya pikir
nohup
perintah itu akan memberi Anda apa yang Anda inginkan juga ... tcpdump berjalan di latar belakang (tidak diperlukan ampersand):sumber
nohup
ketika Anda menjalankan perintah di latar belakang, tetapi itu benar-benar tidak ada hubungannya dengan pertanyaan ini. (2) Jawaban ini salah -nohup
dengan sendirinya tidak menyebabkan perintah dijalankan di latar belakang; Anda masih harus mengetik&
(yang membuat kami kembali ke tempat kami mulai, dengan kesalahan sintaks pada perintah).Hanya untuk menambah jawaban Anubhava yang sangat baik :
Anda dapat menggunakan
{}
juga, seperti ini:{}
sedikit lebih efisien daripada()
tidak membuat sub shell.{}
memang membutuhkan ruang setelah{
dan;
sebelum}
kecuali kita&
sudah punya.sumber
;
antaratcpdump
danls
perintah - tinggalkan saja tanda koma dan itu akan bekerja.Gunakan
&&
untuk memisahkan perintah Anda seperti:sumber
tcpdump
proses di latar belakang,&&
apakah Anda tidak baik sama sekali.