CTRL- tuşuna basmanın zorluğunun önleyici bir önlemi olarak, zeditörünüz için arka planda çalışan bir sarmalayıcı komut dosyası yapabilirsiniz. Bu şekilde, arkaplanda açıkça başlatmayı hatırlamaya dikkat etmeniz gerekmez:
#!/bin/sh
EDITOR="emacs" # or whatever
if [ -z "${DISPLAY}" ]; then
${EDITOR} "$@"
else
${EDITOR} "$@" &
fi
Yukarıda, önce X sunucunuz olup olmadığını belirlemeye çalışırız ve sonra editörü arka planda çalıştırırız (değilse, çoğu Unix editörü terminalinizi kullanır ve bu durumda editörü arka plan işlemi olarak çalıştırmak istemezsiniz) . Tüm argümanları "$@"tıpkı sarmalayıcı komut dosyası için sağladığınız gibi , seçtiğiniz edibatim ( ) editörünüze iletir .
Kayıp komut için ... Temel denememe göre, terminal içermeyen GUI programları için, ilk gönderme SIGSTOPve sonra SIGCONTön plan işlemine kadar basit olabilir ( killbunu uygulamak için kabuk komut dosyasını kullanıyorsanız komutu kullanarak ) . Elbette başka bir terminal penceresinde / sekmesinde çalıştırmanız gerekecek ve zorluk, rahatça ve sinyalinizi göndermek istediğiniz PID'yi bulmak için genel bir şekilde olacaktır. Varsayılan olarak iki sinyali verilen adın tüm işlemlerine gönderebilirsiniz (en sevdiğiniz editöre varsayılan olarak ve PID'lerin argüman olarak kullanılmasına izin verme):
#!/bin/sh
EDITOR=emacs # whatever
stop_cont_prog()
{
case "$1" in
# begin with number is considered PID - this is not good
# enough to be taken seriously...
[1-9]*) kill -SIGSTOP "$1"; kill -SIGCONT "$2";;
*) killall -SIGSTOP "$1"; killall -SIGCONT "$2";;
esac
}
if [ -n "$1" ]; then
for prog in "$@"; do stop_cont_prog "$1"; done
else
stop_cont_prog "${EDITOR}"
fi
Bu yöntem emacs, arka planda (birkaç) komut çalıştırdıktan sonra bana terminal sekmelerimi doğru bir şekilde verdi . Ancak terminalde çalışan emac işlemleri, kabuk işi kontrolü veya terminal ayarı karışıklığından dolayı düzgün şekilde geri yüklenmedi. Dolayısıyla bu yöntem biraz gelişmişlikten faydalanacaktır.
SIGSTOPEğer (ortak varsayılan olarak) basın ön plan işlemine göndermek tam olarak ne olduğunu CTRL- z. stty -aÇıkış bakın
$ stty -a
speed 38400 baud; rows 50; columns 200; line = 0;
intr = ^C; [...] start = ^Q; stop = ^S; susp = ^Z; [...]
[...]
(çıktı kısaltılmış) ve sttymanuel sayfa:
susp CHAR
CHAR will send a terminal stop signal
SIGSTOPSinyal kullanılarak durdurulan işlemler gönderilerek yeniden başlatılabilir SIGCONT. Normalde, dikkate aldığımız SIGCONTdiğer manipülasyonları fgve bgkomutları gönderecek ve ilgilenecek olan kabuk işi kontrol mantığıdır .
tmuxsorunuzda istenen aynı işlevi verir.