Я ищу одну строку, которая возвращает pid запущенного процесса.
В настоящее время у меня есть:
ps -A -o pid,cmd|grep xxx|head -n 1
И это возвращает кулак pid, command
. Мне нужно только первое число из вывода и игнорировать остальные. Я полагаю sed
или awk
помог бы здесь, но мой опыт работы с ними ограничен.
Кроме того, у этого есть другая проблема, это возвратит pid grep, если xxx не работает.
Очень важно иметь одну строку, так как я хочу повторно использовать вывод для выполнения чего-то другого, например, для уничтожения этого процесса.
Ответы:
Если вам нужен pid процесса, вы можете использовать его,
pgrep
если он доступен.pgrep <command>
вернет pid команды (или список pid в случае, если запущено несколько экземпляров команды, и в этом случае вы можете использоватьhead
или другие соответствующие команды)Надеюсь, это поможет!
источник
kill `pgrep xxx`
pkill
.Нужна только еще одна команда; вам нужно только первое поле из строки значений, разделенных пробелами:
Ну, два. Я добавил еще один grep, чтобы удалить сам grep из вывода.
источник
Просто используйте pgrep, это намного проще
Вышеупомянутый выбирает самый старый процесс с точным именем
источник
pkill
(с теми же аргументами) будет самым прямым выбором.pidof xxx
хватит на linuxисточник
Запуск на Cygwin, поэтому я не могу использовать -A и -o, но что-то вроде этого:
источник
вы можете сделать что-то вроде
тогда xxx должно быть именем процесса, и он не подхватит grep из-за якоря ^
источник