Как остановить процесс, который работает в фоновом режиме, не закрывая терминал?

Вопрос или проблема

Я запустил код sudo ./vhusbdarm64 &

Но когда я пытаюсь найти PID с помощью ps aux | grep rot, я получаю только следующее:

pi          2448  0.0  0.0   3968  1536 pts/0    S+   11:45   0:00 grep --color=                                                                                                             auto rot

Как я могу остановить процесс, не закрывая терминал?

Самый простой способ найти ваш процесс – использовать команду jobs, которая отобразит процессы, запущенные в текущем сеансе. Если работа указана там, вы можете использовать команду fg (возможно с % и номером задания), чтобы вернуть её на передний план. Затем вы можете прервать её с помощью ctrlc

Если процесс стал сиротой, может не остаться задания, с которым это могло бы работать.

Следующий простой способ найти работу – использовать команду ps t, которая отобразит все процессы на текущем терминале. Затем вы можете использовать sudo kill с PID задания, указанным в ps.

Если процесс отсоединился от терминала, это может также не сработать. Вместо того чтобы искать задание по (предположительно ошибочно набранному) имени пользователя, вам следует искать по команде, которую вы ввели, например, ps aux | grep vhusbdarm64

Если даже это не показывает ничего, возможно, он уже завершился и больше не работает.

Обратите внимание, что если процесс отсоединился от терминала, то существует вероятность, что закрытие терминала, как вы изначально предлагали, может его не убить!

В заключение, было рекомендовано использовать kill -9. Я настоятельно не рекомендую это, так как это не дает целевому процессу никакой возможности очиститься. Обычно достаточно kill без указанного сигнала. Если он не завершится через несколько секунд, только тогда я бы использовал -9.

Вы можете остановить процесс по его PID, который вы указали в своем вопросе.

Итак: –

sudo kill -9 2448

должно сработать в вашем случае.

Или вы можете вернуть его на передний план, использовав его PID следующим образом: –

sudo fg 2448

и CTL c должно его остановить.

Ответ или решение

Чтобы остановить процесс, работающий в фоновом режиме, не закрывая терминал, вам необходимо выполнить несколько шагов для его обнаружения и остановки. В данной ситуации выполнение команды sudo ./vhusbdarm64 & привело к запуску процесса в фоновом режиме, что затрудняет его поиск и управление.

Шаг 1: Определение процесса

Первым делом, для поиска выполненных процессов в текущем терминале, вы можете использовать команду jobs. Эта команда отображает процессы, которые были запущены в рамках вашей сессии терминала. Если ваш процесс всё ещё находится в списке, вы сможете его вернуть в foreground, чтобы затем завершить с помощью комбинации клавиш Ctrl+C.

Однако, если процесс был «отсоединен» от терминала, он может не отображаться в списке jobs. В таком случае вы можете воспользоваться командой ps для просмотра всех процессов, связанных с терминалом. Используйте команду:

ps t

Это покажет все процессы, запущенные в рамках текущего терминала.

Шаг 2: Поиск PID

Если ваш процесс не найден в списке jobs, вы можете использовать более специфическую команду для поиска по имени:

ps aux | grep vhusbdarm64

Если процесс всё ещё запущен, вы сможете увидеть его идентификатор процесса (PID) в выводе.

Шаг 3: Завершение процесса

Для завершения процесса используйте команду kill, указывая его PID, который вы нашли на предыдущем шаге. Например, если PID вашего процесса — 1234, команда будет выглядеть следующим образом:

sudo kill 1234

Если процесс не завершится через несколько секунд, вы можете использовать более жёсткий подход с сигналом -9, но такой подход рекомендуется применять в последнюю очередь:

sudo kill -9 1234

Советы

  1. Будьте осторожны с kill -9: Это принудительное завершение процесса не позволяет ему выполнить какие-либо действия по очистке, поэтому использовать его стоит только в случае крайней необходимости.

  2. Открытие другого терминала: Если вы не можете найти процесс, возможно, он уже завершился. Если оставшиеся команды не дают результата, вы можете попробовать открыть другой экземпляр терминала и снова выполнить команды для поиска и завершения процесса в нём.

Заключение

Эффективное управление фоновыми процессами в UNIX-подобных системах требует понимания механик работы с процессами. Используя описанные методы, вы сможете быстро находить и останавливать процессы, не закрывая рабочую сессию в терминале. Если у вас есть дополнительные вопросы, и вы хотите изучить эту тему глубже, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...