задача: получить название запущенного процесса без аргументов.
обычно делал так:
ps -p $PID -o comm=
но вот если COMMAND больше вроде 15 символов, то вывод обрезается.
пробовал разные варианты:
ps ww -p $PID -o comm=
ps --cols 10000 -p $PID -o comm=
не получается.
"If ps can not determine display width, as when output is redirected (piped) into a file or another command, the output width is undefined. (it may be 80, unlimited, determined by the TERM variable, and so on) The COLUMNS environment variable or --cols option may be used to exactly determine the width in this case. The w or -w option may be also be used to adjust width."Это из man ps. Оно?
да, man первым делом посмотрел, но как писал выше не --cols, ни -w не помогли.
>да, man первым делом посмотрел, но как писал выше не --cols, ни
>-w не помогли.Какая операционка?
Linux: ps auxww
Solaris: /usr/ucb/ps axuwww
>Какая операционка?
>Linux: ps auxwwоперационка debian.
не работает.
$ cp /bin/bash qwertyuiopqwertyuiop
$ ./qwertyuiopqwertyuiop &
$ ps ww -o comm=
qwertyuiopqwert
...ps auxww не подходит, у меня задача, по пиду посмотреть мой ли процесс запущен или не мой.
>ps auxww не подходит, у меня задача, по пиду посмотреть мой ли
>процесс запущен или не мой.непонятно. Уточните задачу.
>>ps auxww не подходит, у меня задача, по пиду посмотреть мой ли
>>процесс запущен или не мой.
>
>непонятно. Уточните задачу.задача такова:
есть название бинарника ($bin)
есть pid (полученный после запуска бинарника и сохраненный в файл $bin.pid)
использую проверку:
if [[ $bin = $(ps -p $(cat $bin.pid) -o comm=) ]] ; then ...
проблема:
если имя бинарника больше 15 символов, то эта проверка не срабатывает.
>[оверквотинг удален]
>>непонятно. Уточните задачу.
>
>задача такова:
>есть название бинарника ($bin)
>есть pid (полученный после запуска бинарника и сохраненный в файл $bin.pid)
>использую проверку:
>if [[ $bin = $(ps -p $(cat $bin.pid) -o comm=) ]] ;
>then ...
>проблема:
>если имя бинарника больше 15 символов, то эта проверка не срабатывает.if [[ "$bin" = "$(cut -d $'\0' -f 1 /proc/$(cat $bin.pid)/cmdline)" ]];
спасибо, то что надо!
if [[ "$bin" == $(cat /proc/($cat $bin.pid)/cmdline) ]]
>ps auxww не подходит, у меня задача, по пиду посмотреть мой ли
>процесс запущен или не мой.Открой для себя proc, можно даже методом тыка без всяких манов.
В следующий раз сразу излагай исходную задачу, а не проблемы с выбранным тобой способом решения.