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 SIGSTOP
ve sonra SIGCONT
ön plan işlemine kadar basit olabilir ( kill
bunu 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.
SIGSTOP
Eğ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 stty
manuel sayfa:
susp CHAR
CHAR will send a terminal stop signal
SIGSTOP
Sinyal kullanılarak durdurulan işlemler gönderilerek yeniden başlatılabilir SIGCONT
. Normalde, dikkate aldığımız SIGCONT
diğer manipülasyonları fg
ve bg
komutları gönderecek ve ilgilenecek olan kabuk işi kontrol mantığıdır .
tmux
sorunuzda istenen aynı işlevi verir.