Как остановить bash-скрипт из командной строки?

Как остановить bash-скрипт из командной строки?

У меня есть скрипт bash, который я использую для запуска XCode на OS X, что занимает несколько минут. Я не могу найти ключевую команду, чтобы остановить его, если я обнаружу ошибку... в DOS я привык к Ctrl+C/ Ctrl+Z, но ни то, ни другое, похоже, не работает. Что я ищу (на стандартном терминале OS X)?

решение1

Здесь вам помогут несколько нажатий клавиш.

Ctrl+ Cдолжен отправить активному процессу сигнал SIGINT, и это должно завершить процесс, если только вы не перехватите сигнал чем-то вроде этого trap INT ...в своем коде оболочки.

Ctrl+ Zдолжен отправить SIGSTOP, который приостановит ваш процесс, если только вы не перехватите свои сигналы.

Сопоставление последовательностей клавиш проходит через некоторые препятствия, включая настройки терминала. Что говорит stty -aваш компьютер? Посмотрите в выводе на intr, это нажатие клавиши, которое должно вызвать SIGINT. Если ничего не установлено, вам нужно установить его, что-то вродеstty intr ^C

Как уже говорили другие, завершить процесс можно и из другого окна.

решение2

Если Ctrl+ Cу вас не работает, вы можете открыть новую вкладку Терминала и ввести

killall [process name]

где [process name]находится имя вашего bash-скрипта (его можно найти в Мониторе активности OS X).

решение3

Вы можете попробовать следующие решения:

  • попробуйте эту комбинацию клавиш: Ctrl+ AltGr+8
  • откройте новый терминал и запуститеpkill -f script_name

решение4

Чтобы добавить к тому, что сказали другие пользователи, вы также можете использовать Ctrl+ \, который отправляет SIGQUITи то же самое, что и , SIGINTза исключением того, что он также создает дамп ядра. Я обнаружил, что программы, которые игнорируют, SIGINTчасто не игнорируют SIGQUIT.

На основеman-страница для kill, вы также можете отправить SIGTERMили SIGKILLлюбому процессу. Вы можете сделать это, найдя свой процесс в таблице процессов (введите ps), а затем введите kill -15 [pid]to send a SIGTERMили kill -9 [pid]to send a SIGKILL(SIGKILL нельзя игнорировать, и он завершит процесс в любом случае).

Источник 1иИсточник 2

Связанный контент