2010-06-10 6 views
1

Je cours un script qui exécute une commande qui dure trop longtemps, donc je veux l'interrompre. De l'aide? J'ai essayé de chercher beaucoup, et on m'a montré la commande kill. Bien, je ne peux pas le faire fonctionner. Au fait, j'utilise un Mac OS X. Merci!Comment répliquer CTRL + C dans un script shell?

+0

Soyez plus précis. Courez-vous le script en arrière-plan? Attendez-vous qu'il se termine? Quel est votre scénario et comment essayez-vous de le faire ... quoi que vous essayiez de faire? – riwalk

+0

Eh bien, fondamentalement, je cours un flux multidiffusion asr mais ne peux pas comprendre comment l'arrêter, donc j'essaye de faire ceci: asr server --source [source] --config [fichier de plist] --debug | (sleep 30 && [CTRL + C]) Le problème est que je ne sais pas comment répliquer CTRL + C – hassaanm

Répondre

2

En supposant que vous avez PID du processus, envoyer un signal SIGINT:

kill -SIGINT PID 

Si vous ne disposez pas du PID, vous pouvez essayer pkill ou killall, mais ils sont un peu moins sûr; un PID est le seul moyen d'identifier de manière unique un processus. Juste après vous frayer un autre processus, le PID doit être en $ !, afin que vous pouvez l'enregistrer puis

process-that-takes-a-long-time & 
pid=$! 
# other stuff 
kill -SIGINT $pid 
+0

Que faire si je ne trouve pas le PID? Existe-t-il un autre moyen de répliquer CTRL + C? – hassaanm

+0

Soyez prudent avec 'killall'. Sur certains systèmes, c'est similaire à "halt". –

0

Pour répliquer Linux Ctrl + C sur un terminal sous Mac OS X, utilisez ctrl + C! Sa même combinaison de touches A travaillé pour moi (premiers pas sur Mac)

edit: Je n'ai pas lu le script fonctionne en arrière-plan.

Questions connexes