URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8440
[ Назад ]

Исходное сообщение
"ps обрезает COMMAND"

Отправлено Sanders , 18-Сен-09 14:28 
задача: получить название запущенного процесса без аргументов.
обычно делал так:
ps -p $PID -o comm=
но вот если COMMAND больше вроде 15 символов, то вывод обрезается.
пробовал разные варианты:
ps ww -p $PID -o comm=
ps --cols 10000 -p $PID -o comm=
не получается.

Содержание

Сообщения в этом обсуждении
"ps обрезает COMMAND"
Отправлено phpcoder , 18-Сен-09 14:31 
"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. Оно?


"ps обрезает COMMAND"
Отправлено Sanders , 18-Сен-09 15:18 
да, man первым делом посмотрел, но как писал выше не --cols, ни -w не помогли.

"ps обрезает COMMAND"
Отправлено sproot , 18-Сен-09 15:25 
>да, man первым делом посмотрел, но как писал выше не --cols, ни
>-w не помогли.

Какая операционка?
Linux: ps auxww
Solaris: /usr/ucb/ps axuwww


"ps обрезает COMMAND"
Отправлено Sanders , 18-Сен-09 16:22 
>Какая операционка?
>Linux: ps auxww

операционка debian.
не работает.
$ cp /bin/bash qwertyuiopqwertyuiop
$ ./qwertyuiopqwertyuiop &
$ ps ww -o comm=
qwertyuiopqwert
...

ps auxww не подходит, у меня задача, по пиду посмотреть мой ли процесс запущен или не мой.


"ps обрезает COMMAND"
Отправлено Slavaz , 18-Сен-09 16:36 
>ps auxww не подходит, у меня задача, по пиду посмотреть мой ли
>процесс запущен или не мой.

непонятно. Уточните задачу.


"ps обрезает COMMAND"
Отправлено Sanders , 18-Сен-09 17:35 
>>ps auxww не подходит, у меня задача, по пиду посмотреть мой ли
>>процесс запущен или не мой.
>
>непонятно. Уточните задачу.

задача такова:
есть название бинарника ($bin)
есть pid (полученный после запуска бинарника и сохраненный в файл $bin.pid)
использую проверку:
if [[ $bin = $(ps -p $(cat $bin.pid) -o comm=) ]] ; then ...
проблема:
если имя бинарника больше 15 символов, то эта проверка не срабатывает.


"ps обрезает COMMAND"
Отправлено Slavaz , 18-Сен-09 17:40 
>[оверквотинг удален]
>>непонятно. Уточните задачу.
>
>задача такова:
>есть название бинарника ($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)" ]];


"ps обрезает COMMAND"
Отправлено Sanders , 21-Сен-09 18:22 
спасибо, то что надо!

"ps обрезает COMMAND"
Отправлено angra , 18-Сен-09 17:46 
if [[ "$bin" == $(cat /proc/($cat $bin.pid)/cmdline) ]]

"ps обрезает COMMAND"
Отправлено angra , 18-Сен-09 17:05 
>ps auxww не подходит, у меня задача, по пиду посмотреть мой ли
>процесс запущен или не мой.

Открой для себя proc, можно даже методом тыка без всяких манов.
В следующий раз сразу излагай исходную задачу, а не проблемы с выбранным тобой способом решения.