Я попытался правильно установить разрешение, но все равно получил ту же ошибку. Наконец-то я обновил свою федору до последней версии, и она каким-то образом это исправила.
chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
В последнем варианте мне пришлось монтировать жесткий диск с помощью компакт-диска восстановления.
ps
' -s sessionid
выбор процессов на основе их идентификатора сеанса.
Вы можете использовать ps -j
, чтобы увидеть идентификатор сеанса процессов. Сеансы вместе с группами процессов обычно используются для управления заданиями оболочки (, поэтому-j
).
Ваш эмулятор терминала создает новый сеанс с процессом, который затем повторно используется для выполнения предпочитаемой вами оболочки. Таким образом, в терминале идентификатор сеанса обычно совпадает с pid этой оболочки.
Итак, если вы запустите ps -j -s "$$"
в этой оболочке , вы получите процессы в сеансе, потому что"$$"
оказывается таким же, как идентификатор сеанса.
Если вы запустите эту команду в любой другой оболочке (, такой как оболочка, которая выполняется в дочернем процессе для интерпретации вашего testing
сценария ), любой оболочке, которая не является лидером сеанса, вы ничего не получите. потому что нет сеанса с идентификатором, соответствующим pid этой оболочки.
$ ps -j -s "$$"
PID PGID SID TTY TIME CMD
7239 7239 7239 pts/7 00:00:00 zsh
21002 21002 7239 pts/7 00:00:00 ps
$$
— 7239, лидер сеанса. Так что ps -j -s 7239
дает мне все процессы в этом сеансе.
$ sh -xc 'ps -j -s "$$"; ps -j -p "$$"'
+ ps -j -s 21044
PID PGID SID TTY TIME CMD
+ ps -j -p 21044
PID PGID SID TTY TIME CMD
21044 21044 7239 pts/7 00:00:00 sh
Первая команда ps
ничего не возвращает, поскольку, как показывает вторая ps
, сеанса с идентификатором 21044 нет, так как процесс с идентификатором 21044 не является лидером сеанса. Лидер сессии по-прежнему 7239, оболочка запущена эмулятором терминала.
$ sh -xc 'ps -j -s "$(($(ps -o sid= -p "$$")))"'
+ ps -o sid= -p 21215
+ ps -j -s 7239
PID PGID SID TTY TIME CMD
7239 7239 7239 pts/7 00:00:00 zsh
21215 21215 7239 pts/7 00:00:00 sh
21217 21215 7239 pts/7 00:00:00 ps
Теперь мы видим все процессы в сеансе. Мы использовали ps -o sid= -p "$$"
, чтобы получить идентификатор сеанса, которому принадлежит $$
.