Solaris process debugging: Difference between revisions

From Lolly's Wiki
Jump to navigationJump to search
m (Text replacement - "<source" to "<syntaxhighlight")
Line 2: Line 2:
==Swap usage per process==
==Swap usage per process==


<source lang=awk>
<syntaxhighlight lang=awk>
# pgrep . | xargs -n 1 pmap -S 2>/dev/null | nawk '
# pgrep . | xargs -n 1 pmap -S 2>/dev/null | nawk '
   function kb2h(value){
   function kb2h(value){
Line 28: Line 28:
==Set the core file size limit on a process==
==Set the core file size limit on a process==
For example for the sshd (and all resulting childs from now):
For example for the sshd (and all resulting childs from now):
<source lang=bash>
<syntaxhighlight lang=bash>
ssh-server# prctl -n process.max-core-size -v 2g -t privileged -r -e deny  $(pgrep -u root -o sshd)
ssh-server# prctl -n process.max-core-size -v 2g -t privileged -r -e deny  $(pgrep -u root -o sshd)
</source>
</source>


Check:
Check:
<source lang=bash>
<syntaxhighlight lang=bash>
ssh-server# prctl -n process.max-core-size  $(pgrep -u root -o sshd)
ssh-server# prctl -n process.max-core-size  $(pgrep -u root -o sshd)
process: 1491: /usr/lib/ssh/sshd
process: 1491: /usr/lib/ssh/sshd
Line 43: Line 43:


Now all processes (for example new logged in users) will have a core file size limit of 2GB... really? No!
Now all processes (for example new logged in users) will have a core file size limit of 2GB... really? No!
<source lang=bash>
<syntaxhighlight lang=bash>
ssh-client# ssh ssh-server
ssh-client# ssh ssh-server
ssh-server# ulimit -Ha | grep core
ssh-server# ulimit -Ha | grep core

Revision as of 15:20, 25 November 2021

Debugging

Swap usage per process

<syntaxhighlight lang=awk>

  1. 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);
 }'

</source>

Set the core file size limit on a process

For example for the sshd (and all resulting childs from now): <syntaxhighlight lang=bash> ssh-server# prctl -n process.max-core-size -v 2g -t privileged -r -e deny $(pgrep -u root -o sshd) </source>

Check: <syntaxhighlight lang=bash> 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                                 -

</source>

Now all processes (for example new logged in users) will have a core file size limit of 2GB... really? No! <syntaxhighlight lang=bash> ssh-client# ssh ssh-server ssh-server# ulimit -Ha | grep core core file size (blocks, -c) 2097152 </source>

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