Search code examples
background-processnohuptop-command

Linux top not printing full command name to file in batch mode as a nohup process


I am trying to find the cpu utilization of a process from top.So before that I had to test the below command

top -b -c -d1 -n2

I am using -c option to print the full command name as the process name gets truncated without -c.
No when I run this as nohup sh test.sh & ,the output nohup.out contains truncated process name and because of which I am not able to grep on the process name

159 neutron   30   0  127620  22765   5479 S   0.0  0.6 399:02.56 /usr/bin/p+t

But when I run this as sh test.sh & its printing the full command name to terminal.
Why is the full command name not printed in spite of using -c in batch mode for top command ?

Whats the difference between command name with -c enabled and process name ?

Or to phrase it the process name and command name are different and the process name is picked from /proc/pid/status by commands like ps or top?


Solution

  • We can set the COLUMNS environment variable before the top command to increase the available width.

    COLUMNS=1000 top -b -c -d1 -n2
    

    The other way would be is to use ps to find the pid's of the processes by their names and specify the format of ps output.This output can be used to feed top to get the cpu usage for the process based on pid.

    ps -eo pid,comms,args
    

    comms = command name only and not the args
    args = full argument list used to launch the process