Это находится на Linux?
Существует на самом деле несколько тонко различных версий названия команды, которые используются ps
, killall
, и т.д.
Два основных варианта: 1) длинное название команды, которое является тем, что Вы получаете, когда Вы работаете ps u
; и 2) короткое название команды, которое является тем, что Вы получаете, когда Вы работаете ps
без любых флагов.
Вероятно, самое большое различие происходит, если Ваша программа является сценарием оболочки или чем-нибудь, что требует интерпретатора, например, Python, Java, и т.д.
Вот действительно тривиальный сценарий, который демонстрирует различие. Я назвал его mycat
:
#!/bin/sh
cat
После выполнения его вот два различных типов ps
.
Во-первых, без u
:
$ ps -p 5290
PID TTY ... CMD
5290 pts/6 ... mycat
Во-вторых, с u
:
$ ps u 5290
USER PID ... COMMAND
mikel 5290 ... /bin/sh /home/mikel/bin/mycat
Отметьте, как вторая версия запускается с /bin/sh
?
Теперь, насколько я могу сказать, killall
на самом деле чтения /proc/<pid>/stat
, и захватывает второе слово, промежуточное parens как название команды, таким образом, это действительно, что необходимо указывать, когда Вы работаете killall
. Логически, это должно совпасть со что ps
без u
флаг говорит, но это была бы хорошая идея проверить.
Вещи проверить:
cat /proc/<pid>/stat
скажите, что название команды?ps -e | grep db2
скажите, что название команды?ps -e | grep db2
и ps au | grep db2
показать то же название команды?Примечания
Если Вы используете другие флаги PS также, то Вы могли бы найти более простым использовать ps -o comm
видеть краткое название и ps -o cmd
видеть длинное имя.
Вы также могли бы найти pkill
лучшая альтернатива. В частности, pkill -f
попытки соответствовать использованию полного названия команды, т.е. названия команды, как распечатано ps u
или ps -o cmd
.
Для конфигурирования su
PATH
, взгляните на /etc/login.defs
:
ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Существует также много других мест PATH
может быть изменен, включая:
/etc/environment
/etc/bash.bashrc
/etc/profile
/etc/profile.d/*
~/.bashrc
~/.bash_profile
Без чего-либо специального в настройках в расчете на пользователя, su
кажется, получает PATH
от /etc/environment
и su -
кажется, получает его среду от /etc/login.defs
ENV_SUPATH
.
Таким образом в Вашей системе, мое предположение - то, что у Вас есть то же PATH
значение в /etc/login.defs
как в /etc/environment
, или у Вас есть некоторая дополнительная конфигурация в /etc/profile.d
, /etc/bash.bashrc
, или некоторый емкостно-резистивный файл в /home/someuser
.
Параметр -
стартовая среда средств, которая является почти тем же как со средой входа в систему для того пользователя.
Без -
среда - то же как среда исходного пользователя.
Например, PATH
обычно то же для пользователей root и обычных пользователей. В некоторых системах существует нет sbin
папки для обычных пользователей. Вы не можете отключить -
от su
легко. Конечно, можно пойти для редактирования исходного кода.
Можно попробовать это путем выполнения
export FOO=bar
su # enter your password
echo $FOO
logout
su - # enter your password again
echo $FOO
В первый раз echo $FOO
печать "запрещает", и во втором разе это пусто.