Несмотря на то, что /proc упоминается кратко выше как источник информации для изучения процессов в системе, я включаю здесь базовый скрипт Bash для анализа некоторой информации из него. Для превосходного введения в виртуальную файловую систему /proc см. Эту статью IBM, в которой объясняется, как она может быть полезной как для пользователей, так и для программистов.
Анализ синтаксического кода /proc с общим сценарием может быть ненадежным, поскольку разные процессы часто имеют разные макеты /proc, но базовую информацию обычно можно почерпнуть с помощью этого скрипта, хотя ее, возможно, придется изменить, если вы хотите проанализировать любую другую конкретную информацию. Я написал его с помощью Bash, но есть более сильные синтаксические анализаторы, которые вы могли бы исследовать, если хотите написать его, используя другой язык сценариев.
Часто в выводе скрипта вы можете увидеть сообщение «отказано в разрешении», что означает, что местоположение /proc не читается $ USER, поэтому вы можете запустить скрипт как root, если хотите
Скопируйте тело сценария в новый файл, сохраните его и сделайте его исполняемым (chmod u+x), а затем вызовите его хотя бы одним аргументом (теперь он может обрабатывать несколько процессов одновременно):
./proc_script xfce4-panel
или поместить его в свой $HOME/bin, а затем вы можете запускать его, как и другие программы, если $HOME/bin находится на вашем пути. (Однако, если вы используете sudo, вам все равно придется указывать абсолютное расположение пути к сценарию, поскольку $HOME/bin не находится в корневом пути.)
Тело скрипта; он также доступен и обновлен в этой статье IBM :
#!/usr/bin/env bash
(( $# == 0 )) && { printf "Usage: Please specify the name of one process \
to research.\n" >&2; exit 1; }
args=("$@")
for process in "${args[@]}"; do
# store user input in a variable and warn then exit if program is not running
queried_pid="$(pgrep "${process}" || { printf '%s\n' "No such program" >&2; })"
# add the contents of the variable into an array
pidarray=($(echo "$queried_pid"))
# iterate over the array, however many pids have been found
for i in "${pidarray[@]}"; do
printf "Pid is: %s\nExe is: %s\nCmdline is: %s\ncwd is: %s\n" "$(echo "$i")" \
"$(stat -c %N /proc/"$i"/exe)" "$(cat /proc/"$i"/cmdline)" "$(cd /proc/"$i"/cwd/; pwd -P)"
done
printf "\n\n"
done
exit
Пример вывода 1:
./proc_parse firefox
Pid is: 1830
Exe is: `/proc/1830/exe' -> `/usr/lib/firefox/firefox'
Cmdline is: /usr/lib/firefox/firefox
cwd is: /home/mike
Образец вывода 2 (имеющий дело с несколькими сообщениями ):
./proc_parse evince
Pid is: 3113
Exe is: `/proc/3113/exe' -> `/usr/bin/evince'
Cmdline is: evince/home/mike/Z_IBM_lpic_Linux_pdfs/l-proc-pdf.pdf
cwd is: /home/mike
Pid is: 3119
Exe is: `/proc/3119/exe' -> `/usr/lib/evince/evinced'
Cmdline is: /usr/lib/evince/evinced
cwd is: /
Не могу комментировать, но опубликует это как предложение.
Это случилось со мной в последнее время. Когда вы начинаете развертывать приложения, заклинание сначала будет развертывать Ubuntu на машинах, которые вы выбрали для приложений, используя MAAS, а затем настройте контейнеры LXD на этих машинах (если вы не решили). Вы можете контролировать статус развертывания из веб-интерфейса MAAS. Установка приложений не запускается, если Ubuntu не была успешно развернута на соответствующих машинах. Если ваши машины демонстрируют успешное развертывание, проверьте, установлены ли контейнеры LXD. Если нет, вам придется пройти через журналы на машинах, чтобы выяснить проблему.
Для меня развертывание Ubuntu было неудачным из-за неправильной конфигурации в BIOS компьютеров. Как только я это исправил, все прошло гладко.
Не могу комментировать, но опубликует это как предложение.
Это случилось со мной в последнее время. Когда вы начинаете развертывать приложения, заклинание сначала будет развертывать Ubuntu на машинах, которые вы выбрали для приложений, используя MAAS, а затем настройте контейнеры LXD на этих машинах (если вы не решили). Вы можете контролировать статус развертывания из веб-интерфейса MAAS. Установка приложений не запускается, если Ubuntu не была успешно развернута на соответствующих машинах. Если ваши машины демонстрируют успешное развертывание, проверьте, установлены ли контейнеры LXD. Если нет, вам придется пройти через журналы на машинах, чтобы выяснить проблему.
Для меня развертывание Ubuntu было неудачным из-за неправильной конфигурации в BIOS компьютеров. Как только я это исправил, все прошло гладко.