Bir kontrol terminali olmadan bir servisi manuel olarak nasıl başlatırım?


2

Arka plan hizmeti olarak çalışan, önyüklemede StartupItem olarak veya el ile komut satırından başlayan bir uygulamayı sürdürüyorum. Kontrol terminali olmadan manuel olarak nasıl başlatılacağını bilmek veya başlattıktan sonra tamamen çıkarmak istiyorum.

Göstermek için TextEdit kullanarak, Terminal'den başlatılırsa, programdan çıkılana kadar istemi engellediğini ve terminal penceresi kapalıysa kapanacağını biliyorum.

/Applications/TextEdit.app/Contents/MacOS/TextEdit

Her ikisine de sırasıyla komut ekleyerek nohupve &komutları kullanarak önlenebilir :

nohup /Applications/TextEdit.app/Contents/MacOS/TextEdit &

Veya disownyerine kullanılabilir nohup:

/Applications/TextEdit.app/Contents/MacOS/TextEdit & disown $!

Terminal penceresi kapalıysa TextEdit'in çalışmaya devam etmesine rağmen, yine de bir uyarı verilir. Bunun nedeni, TextEdit'in aşağıdakilerle gösterildiği gibi hala bir kontrol terminaline sahip olmasıdır ps -ax:

$ ps -ax | grep TextEdit
28390 ttys003    0:00.12 /Applications/TextEdit.app/Contents/MacOS/TextEdit

Terminal penceresi kapanana kadar değil, TextEdit'in sonunda TTY'siz olduğu kesin.

$ ps -ax | grep TextEdit
28390 ??         0:00.12 /Applications/TextEdit.app/Contents/MacOS/TextEdit

Doğrudan sistem çağrılarıyla kontrol terminali olmadan servisi başlatmanın mümkün olduğunu biliyorum, çünkü StartupItem hizmeti başlatmak için kullanıldığında (önyüklemede veya SystemStarter ile), bir TTY olmadan başlar. Sorum şu, bu sadece komut satırı kullanılarak da yapılabilir mi?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.