Solaris process debugging: Difference between revisions

From Lolly's Wiki
Jump to navigationJump to search
No edit summary
Line 2: Line 2:
==Swap usage per process==
==Swap usage per process==


<source lang=bash>
<source lang=awk>
# pgrep . |\
# pgrep . | xargs -n 1 pmap -S 2>/dev/null | nawk '
  xargs -n 1 pmap -S 2>/dev/null |\
  function kb2h(value){
  nawk '
    unit=1;
    $1 ~ /[0-9]+:/{
    while(value>=1024){
      pid=$1;
      unit++;
      proc=$2;
      value/=1024;
    }
    };
    /^total/ {
    split("KB,MB,GB,TB,PB", unit_string, /,/);
      swap_kb=$4;
    return sprintf("%7.2f %s",value,unit_string[unit]);
      printf("%6s %6d Kb Swap %s\n",pid,swap_kb,proc);
  }
    }' |\
  /[0-9]+:/ {
  sort -k2n,2n
    pid=$1;
    prog=$2;
  }
  /^total/{  
    swap_total+=$3;
    printf ("%s\t%s\t%s\n",pid,kb2h($3),prog);
  }
  END{
    printf "Total:\t%s\n",kb2h(swap_total);
  }'
</source>
</source>


==Set the core file size limit on a process==
==Set the core file size limit on a process==

Revision as of 12:30, 8 November 2016

Debugging

Swap usage per process

# pgrep . | xargs -n 1 pmap -S 2>/dev/null | nawk '
  function kb2h(value){
    unit=1;
    while(value>=1024){
      unit++;
      value/=1024;
    };
    split("KB,MB,GB,TB,PB", unit_string, /,/);
    return sprintf("%7.2f %s",value,unit_string[unit]);
  }
  /[0-9]+:/ {
    pid=$1;
    prog=$2;
  }
  /^total/{ 
    swap_total+=$3;
    printf ("%s\t%s\t%s\n",pid,kb2h($3),prog);
  }
  END{
    printf "Total:\t%s\n",kb2h(swap_total);
  }'

Set the core file size limit on a process

For example for the sshd (and all resulting childs from now):

ssh-server# prctl -n process.max-core-size -v 2g -t privileged -r -e deny  $(pgrep -u root -o sshd)

Check:

ssh-server# prctl -n process.max-core-size  $(pgrep -u root -o sshd)
process: 1491: /usr/lib/ssh/sshd
NAME    PRIVILEGE       VALUE    FLAG   ACTION                       RECIPIENT
process.max-core-size
        privileged      2.00GB      -   deny                                 -
        system          8.00EB    max   deny                                 -

Now all processes (for example new logged in users) will have a core file size limit of 2GB... really? No!

ssh-client# ssh ssh-server
ssh-server# ulimit -Ha | grep core
core file size          (blocks, -c) 2097152

See what it says: blocks <-- !!! From man page: -c Maximum core file size (in 512-byte blocks)