Saya meluncurkan aplikasi dari Terminal dengan perintah seperti ini:
/Applications/Mail.app/Contents/MacOS/Mail &
Bagian yang penting adalah &
.
Untuk Unix / Linux / Solaris:
- Saya telah belajar di sekolah bahwa menambahkan program
&
membuat hidup sendiri. - Saya sangat ingat meluncurkan perintah seperti
xeyes &
dan menjalankan program dengan aman bahkan setelah saya menutup shell.
- Saya telah belajar di sekolah bahwa menambahkan program
Di Mac OS X (Unix inside):
- Saya meluncurkan aplikasi dengan
&
dan saya menutup jendela Terminal: aplikasi keluar! - Mengapa perilaku yang tidak diinginkan ini terjadi pada Mac OS X?
- Bagaimana ini bisa diperbaiki?
- Saya meluncurkan aplikasi dengan
macos
terminal
applications
command-line
unix
Nicolas Barbulesco
sumber
sumber
Jawaban:
Cara "standar" untuk mencapai apa yang ingin Anda capai (pada OS X serta di Linux, FreeBSD atau sistem lain) adalah dengan menggunakan perintah
nohup
:Ini akan mulai
program
, yang akan berjalan di latar belakang relatif ke shell karena&
- dan akan mengabaikan sinyal hangup karena perintah nohup.Dengan cara ini program akan terus berjalan meskipun Anda menutup shell. Tidak masalah jika Anda menutup shell karena Anda menutup Terminal.app, atau Anda menutup shell karena Anda melepaskan koneksi ssh ke komputer, atau serupa.
sumber
nohup.out
di folder saat ini. Bahkan ketika tidak ada yang bisa ditulis. Setelah beberapa minggu, saya akan memiliki filenohup.out
di mana-mana di Mac saya. :-(nohup command>/dev/null&
ataucommand&disown
.Ketika Anda menutup jendela terminal, ia mengirimkan SIGHUP (sinyal hangup) ke shell, yang kemudian mengirimkan SIGHUP ke semua proses yang dimulai . Ini adalah perilaku tradisional untuk bash dan banyak shell lainnya, dan solusi tradisional untuk ini adalah menggunakan nohup.
Ada beberapa cara yang berbeda untuk mesin Unix, jadi mungkin saja emulator terminal spesifik yang Anda gunakan atau cangkang spesifik yang Anda gunakan berperilaku berbeda. Tapi itu tidak spesifik untuk OS X. Misalnya, ada pertanyaan tentang masalah yang sama di Ubuntu.
sumber
Dengan menggunakan ampersand "
&
", Anda memberi tahu Terminal untuk menjalankan proses di latar belakang shell itu sendiri. Jadi, ketika Anda menutup shell (dan membunuh prosesnya), GUI (Mail.app sendiri) juga akan menutup.Perintah yang benar untuk meluncurkan Mail dari terminal hanyalah:
Sunting: Saya baru saja menemukan ini di U&L Stack Exchange: Apa yang dimaksud ampersand di akhir baris skrip shell? Jawaban yang diberikan sangat bagus dan menjelaskan dengan tepat apa yang terjadi secara lebih rinci dan lebih baik daripada yang pernah saya bisa! Saya sangat merekomendasikan membacanya.
sumber
/Users/nicolas/Desktop/Firefox-29-fr/Firefox.app/Contents/MacOS/firefox -profile "/Users/nicolas/Desktop/Firefox-29-fr/Profil-Firefox-29-fr/" -no-remote &
/Applications
, tetapi pada jalur tertentu? Seperti ini:/Users/nicolas/Desktop/Firefox-29-fr/Firefox.app/Contents/MacOS/firefox -profile "/Users/nicolas/Desktop/Firefox-29-fr/Profil-Firefox-29-fr/" -no-remote &
open -a Applications/Mail.app/Contents/MacOS/Mail; exit
@jksoegaard memiliki perintah yang tepat tetapi seperti yang Anda sebutkan di komentar, itu membuat file nohup.out. Untuk menghentikan file nohup.out dibuat, Anda perlu mengarahkan ulang STDOUT dan STDERR ke tempat lain. Perintah lengkapnya adalah
nohup program &>/dev/null &
. Ini akan menjalankan program Anda di latar belakang, mengabaikan SIGHUP, dan mengirim semua STDOUT dan STDERR ke / dev / null.Namun, jika Anda tidak ingat untuk menambahkan nohup (seperti dalam pertanyaan awal Anda), Anda dapat menggunakan
disown -arh
perintah untuk menandai semua latar belakang pekerjaan yang berjalan untuk mengabaikan SIGHUP.sumber
Saya telah menemukan solusinya:
(/Applications/Mail.app/Contents/MacOS/Mail &)
Sederhana, cantik, dan berhasil!
Tanda kurung
( )
meluncurkan perintah di sub-shell.sumber
Atau Anda bisa mencoba
open -a /Applications/Mail.app
sumber
Saya telah menemukan solusi: memerangi kejahatan dengan kejahatan.
Saya meluncurkan aplikasi saya dengan perintah semacam ini:
/Applications/Mail.app/Contents/MacOS/Mail & exit
Shell keluar sekaligus. Dan aplikasi bertahan, bahkan setelah saya menutup jendela Terminal.
Tetapi solusi ini tidak terlalu berguna.
sumber
/Applications
, dan tidak dibundel dengan Mac saya..app
folder disebut "bundel", danopen
perintah dapat meluncurkannya apakah ada di/Applications
folder atau folder lain. Istilah "bundel" dalam konteks ini tidak berarti "dikirimkan bersama OS X".