cat: pid.txt: нет такого файла или каталога
У меня проблема с котом. Я хочу написать сценарий, выполняющий то же самое, что и ps -e. В pid.txt у меня есть PID запущенных процессов.
ls /proc/ | grep -o "[0-9]" | sort -h > pid.txt
Затем я хочу использовать $ line как часть пути к cmdline для каждого PID.
cat pid.txt | while read line; do cat /proc/$line/cmdline; done
я тоже пытаюсь зациклить
for id in 'ls /proc/ | grep -o "[0-9]\+" | sort -h'; do
cat /proc/$id/cmdline;
done
Не знаю, что делаю не так. Заранее спасибо.
3 ответа
Я думаю, что вам нужно это - во всех ваших подходах было несколько недостатков (или вы действительно просто хотели посмотреть на процесс с однозначным PID?):
for pid in $(ls /proc/ | grep -E '^[0-9]+$'|sort -h); do cat /proc/${pid}/cmdline; tr '\x00' '\n'; done
Это действительно помогло моей проблеме, пока я добавлял свое местоположение пользователя, я обновлял $PATH. перед экспортом я добавил дополнительную строку как PATH =, которая испортила всю мою переменную PATH, и ни одна из команд unix не работает в Терминале.
Кажется, вы находитесь в другом текущем каталоге при запуске
cat pid.txt...
по сравнению с тем, когда вы запускали
ls...
команда. Запустите обе свои команды в одном окне терминала или используйте абсолютный путь, например
/path/to/pid.txt
Помимо вашей ошибки, вы можете удалить
-o
из вашей команды grep, поскольку она дает вам 1 цифру для соответствующего pid. Например, вы получите 2, когда pid равен 423. @Roadowl уже указал на это.