#linux #bash #sed
#linux #bash #sed
Вопрос:
У меня есть файл bash, do-something.sh
#!/bin/bash
ps -efa > /command.txt
sed -i 's/root //g' command.txt
sed -i '/UID/d' command.txt
sed -i -E 's/.{26}:00:.*//g' command.txt
sed -i '1s/^/kill -9 /' command.txt
sed -e :a -e '{N; s/n/ /g;ta}' command.txt
В настоящее время в нем перечислены идентификаторы процессов в command.txt в вертикальном формате я бы хотел, чтобы они были перечислены по горизонтали, чтобы я мог запустить команду с помощью «. / do-something» и остановить все процессы.
Комментарии:
1. Вы изучали управление процессами ? Это выглядит крайне сомнительно.
2. Пожалуйста, покажите нам фактический ввод и желаемый результат.
3.
ps -ea -o pid= | sort -nr | xargs echo
вы получите список всех текущих PID-адресов от последнего до самого раннего.4. Этот скрипт — отличный пример того, почему
sed -i
это ужасная идея.5. Игнорируя вопрос о том, следует ли вам анализировать вывод ps таким образом, попробуйте:
ps -efa | sed -e 's/root //g' -e '/UID/d' ... > command.txt
Ответ №1:
Просто cat
файл с идентификаторами pid xargs | kill -9
, например, так:
cat pids.txt | xargs kill -9
Пример:
echo 12345 67890 | xargs kill -9
Ответ №2:
Вы можете создать команду kill со всеми PID в конце в одной строке с помощью этой команды:
ps -efa | awk 'BEGIN{printf "kill -9 "}{printf "%s ",$2}'