$ ps -eo pcpu,size:8,user,start_time,pid,args | sort -nk 1 -r |egrep -v "COMMAND|egrep -v|start_time"| head -10
The ps command displays every process (-e) with user-defined format (e.g., -o pcpu).
pcpu = CPU usage percentage
size = memory size in kB (with 8 character long field — otherwise the formatting is messed up!)
user = user name
start_time = start time
pid = process ID,
args = command being run
The sort command sorts the lines numerically (-n) in the reverse order (-r) based on the first field (-k 1).
Then egrep -v filters the lines that do not match the header (containing COMMAND), egrep and ps commands themselves.
The head -10 command filters out top 10 lines from the list generated by previous sort. (Note: here -10 is actually redundant since head command prints out top 10 lines by default, but it is there as a reminder that we can print more lines using a number greater than 10 it if there is a need!)
Credit: Nixcraft.