'sudo env' и 'sudo -i env' показывают разные результаты

Со своим флагом-o команда ps возвращает много информации о процессе, включая:

  • командная строка
  • статус
  • владелец
  • идентификатор процесса (он же "PID")
  • ...

См. полный список спецификаторов формата «ps» .

Это также включает PID родителя процесса, также известного как «PPID».

Например, чтобы получить PPID «emacs», работающего локально (, то есть PID процесса, запустившего emacs на моей рабочей станции ), я могу запустить:

ps -eo ppid,comm | awk '/emacs/ {print $1}'

который возвращает "1102" (ничего страшного, но я -воспользуюсь этим позже ). Детали этого родительского процесса:

ps -o args,comm,state,user 1102

или (еще лучше):

ps -o args,comm,state,user $(ps -eo ppid,comm | awk '/emacs/ {print $1}')

, который возвращает:

COMMAND                     COMMAND         S USER
xfce4-panel --display :0.0  xfce4-panel     S matth

NB :список отображаемых полей приведен для примера (здесь они избыточны ).

0
25.03.2021, 16:24
1 ответ

Вероятно, это исходит от команды sudo. Как вы расширяете/определяете свою переменную path? В вашем локальном пользователе .profile? Потому что, если вы просто введете sudo -iили sudo -s, вы станете пользователем root и, таким образом, будете использовать его .profile. Согласноman sudo:

-i, --login: Run the shell specified by the target user's password database entry as a login shell. This means that login-specific resource files such as.profile,.bash_profile or.login will be read by the shell.
-s, --shell: Run the shell specified by the SHELL environment variable if it is set or the shell specified by the invoking user's password database entry.
0
28.04.2021, 22:56

Теги

Похожие вопросы