150 likes | 285 Views
Controlling Processes & Periodic Processes. WeeSan Lee <weesan@cs.ucr.edu> http://www.cs.ucr.edu/~weesan/cs183/. Roadmap. What is a process? What is a setuid process? How to create a process? Signals How to send signals to the processes? Process States Niceness Monitor Processes
E N D
Controlling Processes & Periodic Processes WeeSan Lee <weesan@cs.ucr.edu> http://www.cs.ucr.edu/~weesan/cs183/
Roadmap • What is a process? • What is a setuid process? • How to create a process? • Signals • How to send signals to the processes? • Process States • Niceness • Monitor Processes • Periodic Processes • Q&A
What is a process? • A running program • Information of a process • PID • PPID • UID & EUID (used for access permission) • GID & EGID (used for access permission) • Status • Niceness or nice value • …
What is a setuid process? • A regular process • EUID == UID of the user who runs the command/script • A setuid process • EUID == the owner UID of the setuid command/script • How to find setuid programs? • $ find /bin -perm -4000 | xargs ls -l • -rwsr-xr-x 1 root root 57908 Nov 30 14:35 /bin/mount • -rwsr-xr-x 1 root root 35864 Mar 14 2007 /bin/ping • -rwsr-xr-x 1 root root 31244 Mar 14 2007 /bin/ping6 • -rwsr-xr-x 1 root root 24060 Mar 21 2007 /bin/su • -rwsr-xr-x 1 root root 38840 Nov 30 14:35 /bin/umount
How to create a process? • $ emacs // Bash clone switch (fork()) { case -1: // Error break; case 0: // Child execv("emacs", …); break; default: // Parent wait(…); break; } // Bash switch (fork()) { case -1: // Error break; case 0: // Child execv("emacs", ...); break; default: // Parent wait(…); break; }
Signals • Process-level interrupt requests • ~30 signals • $ kill -l • Can be caught or trapped by a process • In Bash, we do: • trap ‘done2(); exit’ 0 1 2 3 15 • Can be blocked or ignored
Signals (cont) • Common signals • 1 HUP • 2 INT • Ctrl-C • 3 QUIT • Core dumping • 9 KILL • 15 TERM • STOP • TSTP • Ctrl-Z • CONT • USR1 • USR2
How to send signals to the processes? • $ kill [-signal] pid • Default signal is TERM or 15 • $ ps auxw | grep emacs • weesan 857 0.0 0.0 13312 7952 pts/5 S Apr15 0:05 emacs • $ kill -9 857 • $ killall [-signal] process_name • $ killall -9 emacs
Process States • Runnable (R) • Ready to be executed • Sleeping (S) • Get no CPU time until receiving a signal • Zombie (Z) • Exited process whose status hasn’t been collected • Display as <defunct> on ps, • Stopped (T) • Process stopped by STOP or TSTP signal
Niceness • -20 to +19 • A high nice value means a low priority • Inherited from the parent • Can increase but not decrease • Except for root • For example: • $ nice -n 1 program • $ renice 1 pid
Monitor Processes • ps • A tool for monitoring processes, eg. • $ ps auxw | less • $ ps laxw | less • $ ps auxw | awk -F' ' '{ print $1, $2, $10; }' • weesan 560 2:28 • weesan 563 0:00 • top • A good tool to display CPU usage • $ top • $ top -n 1
Monitor Processes (cont) • strace • Show every system call and signal a process receives • $ strace -p pid • lsof • List open files • $ lsof -u userid • $ lsof -p pid • uptime • Display the current time, how long the system has been up, # of current users, average system load for the pass 1, 5 and 15 mins
Monitor Processes (cont) • Runaway processes • Processes that consume excessive amounts of a system resource, such as CPU time or disk space • How to approach them? • Use ps, top, strace, lsof to locate them • renice them • Stop them by sending STOP signal and resume later by CONT signal • kill them
Periodic Processes • cron daemon • A daemon that run jobs periodically • Crontab (/etc/crontab, /etc/cron.*/, /var/spool/cron/) • $ crontab -l • $ crontab -e • Format • Min Hour Day Month Weeday Command • 10 23 * * mon-fri /home/weesan/backup/home.sh • 30 23 * * fri /home/weesan/backup/import.sh • 0 */1 * * * /usr/bin/rdate -s time.nist.gov
Reference • LAH • Ch 4: Controlling Processes • Ch 8: Periodic Processes