2012-05-07 17 views
6

, bir Linux terminalde döngü için idam:Linux için çalışan bir döngü nasıl öldürülür? aşağıdaki gibi Linux üzerinde çalışıyorum

for i in `cat fileName.txt` 
do 
echo $i 
vim $i 
done 

Filename.txt bir dosya içeriyor olduğu geniş ben vim açıyorum dosya girişlerinin hiçbir editör teker teker. Şimdi diğer dosyaları aralarında atlamak zorundayım (yani, for döngüsünü kırmak zorundayım). Döngü için çalışan PID'nin nasıl alınacağı konusunda herhangi bir öneriniz var mı? ve aynısını öldür. Şimdiden teşekkürler.

+0

PID kullanır ve öldürürseniz, komut dosyanızın tamamı döngü. ps-A | grep YOUR_SCRIPT_NAME' işleminizi ve kimliğini vermelidir –

+0

Açtığınız dosyayı öldürmek istiyor musunuz? DosyaAdı.txt'in 1.txt 2.txt 3.txt gibi girişleri var. 1.txt'yi açtıktan sonra bu işlemi öldürmek ister misiniz? Bu doğru mu ? – m4n07

+0

@Pavan Teşekkürler, ancak herhangi bir betikte değil, terminalde for döngüsünü yürütüyorum. – BSalunke

cevap

1

Bu aynı zamanda hile yapabilir:

while true ; do killall vim ; done 

Her zamanki gibi^C bu bir iptal edebilir.

+0

Hayır, hata verdi, yani vim (22400): Çalışmaya izin verilmiyor – BSalunke

+0

Bunu, tüm kullanıcılara ait olan döngü ile aynı kullanıcı altında mı çalıştırıyorsunuz? Ayrıca, bir başkası aynı makinede aynı anda vim kullanıyor olabilir, bu durumda hatayı görmezden gelebilirsiniz. 'killall' hala yapabileceği her şeyi öldürecek. – Thomas

9

Çalışan numaralı işi öldürmek istiyorsunuz. CtrlZ'a basın.

[1]+ Stopped     vim $i 

KILL sinyal göndermeye kill ile bu sayıyı kullanın:

kill -9 %1 

ve sonradan öldürülen edilmelidir:

[1]+ Killed     vim $i 
+0

Bu, bir komut dosyasından ziyade bir terminalde kabuk döngüsünü öldürmek için çalışmamın tek yoludur. Teşekkürler, başka bir yerde% n sözdizimi bulamadım. – andybuckley

1

işlem kimliği bul (Bash gibi bir şey göstereceğim For döngüsü yürüten kabuk olması gereken vim işleminin üst öğesinin PID'si. "Pstree -p" kullanmayı deneyin. Sonra, "kill" kullanarak bu işlem kimliğini öldür. Vim işlemlerinin oluşturulmasını sonlandırmak için for döngüsünü durdurmanız gerekir.

0

Bu döngü bir bash süreci tarafından yönetiliyor. Bu yüzden sürecin PID'sini bulun ve öldürün. Bunu yapmak üst sürecinin PID olan bir vim sürecinin PPID'yi, bulmak ve ana işlemini sonlandırmak için: ps -elf | tr -s ' ' | grep vim | cut -f5 -d ' ' | xargs kill

Hepiniz vim süreçlerini öldürecek bu ikincisi, bu komutu kullanabilirsiniz, Hiçbir vim örneğinin kalmadığından emin olmak için: ps -elf | tr -s ' ' | grep vim | cut -f4 -d ' ' | xargs kill

"İzin verilmiyor" ile ilgili bir sorun yaşadığınızı görüyorum. Bu bir izin eksikliğinden kaynaklanabilir, bu nedenle süreçleri öldürecağından emin olmak için, sari ile xargs öldürmesini çağırabilirsiniz: ps -elf | tr -s ' ' | grep vim | cut -f5 -d ' ' | sudo xargs kill