Saya mencoba menjalankan beberapa perintah yang tidak pernah selesai. Perintah-perintah ini menonton direktori dan memperbarui file ketika mereka berubah. Idenya adalah bahwa saya perlu beberapa folder diawasi oleh alat yang berbeda, dapat menjalankan semuanya dari satu perintah.
Untuk perintah normal yang kembali seperti yang diharapkan, pisahkan perintah dengan a ;
bekerja.
ls /;
cd /;
ls var;
cd var;
ls log;
cd log
Ketika saya mencoba untuk menyatukan perintah yang tidak kembali (seperti tail -f <some_file>
atau coffee -c -w <some_coffeescript_folder>
, hanya perintah pertama yang akan dijalankan.
Apakah ada cara untuk melakukan ini dalam satu perintah? Inilah perintah yang saya coba tautkan bersama:
coffee -c -m -w public/javascript/*.coffee; \
stylus views/stylesheets/*.styl -w -m --out public/stylesheets/; \
stylus views/stylesheets/lib/*.styl -w -m --out public/stylesheets/lib/;
linux
command-line
bash
script
AlbertEngelB
sumber
sumber
Jawaban:
Anda dapat menjalankannya di latar belakang dengan menambahkan ampersand ke perintah:
Jika Anda ingin melihat semua pekerjaan yang sedang berjalan di latar belakang lakukan:
Untuk mendapatkan pekerjaan latar belakang ke latar depan, gunakan fg (PID adalah opsional):
Untuk mengirim pekerjaan latar depan (yang "memblokir" shell Anda) kembali ke mode latar belakang gunakan Ctrl-Z / bg:
Saya kira pekerjaan terikat pada shell Anda dan tidak akan bercabang secara otomatis. Ini berarti jika Anda masuk melalui SSH dan Anda memutuskan, shell menerima SIGHUP, yang akan dikirim ke pekerjaan juga. Ini akan menghentikan / keluar dari perintah Anda.
Jika Anda ingin mempertahankan pekerjaan & amp; berjalan bahkan setelah Anda keluar, Anda mungkin ingin melihat "bangkai" bawaan bash:
Opsi lain adalah "nohup" (perintah, bukan bash built-in) atau Anda menggunakan terminal multiplexer seperti "layar" atau "tmux".
sumber
Coba ini:
sumber
;
setelah ampersand. Terima kasih!