
У меня есть скрипт 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 нельзя игнорировать, и он завершит процесс в любом случае).