LWM-Linux/03 - Package and Process Management/Proccess Monitoring and Management.md

149 lines
3.5 KiB
Markdown

# Process Monitoring and Management in Linux
## 1. Viewing Running Processes
Let's start with the basic commands to view running processes:
### ps - Process Status
The 'ps' command provides a snapshot of current processes.
Basic usage:
`ps
Common options:
- `-aux`: Shows all processes for all users
- `-ef`: Similar to aux, but in a different format
- `-lax`: Provides more detailed information
### top - Table of Processes
'top' provides a real-time, dynamic view of running processes.
Basic usage:
`top`
In top, you can use:
- 'q' to quit
- 'k' to kill a process (you'll be prompted for the PID)
- 'r' to renice (change priority) of a process
### htop - Interactive Process Viewer
'htop' is an improved version of 'top' with a more user-friendly interface.
Install it (if not already installed):
- `sudo apt install htop` # For Debian/Ubuntu
- `sudo yum install htop` # For CentOS/RHEL
Run it:
`htop`
## 2. Process Management
### kill - Terminate a Process
The 'kill' command sends a signal to a process, by default the TERM signal.
Basic usage:
`kill PID`
Common signals:
- SIGTERM (15): Graceful termination
- SIGKILL (9): Forceful termination
Example:
`kill -9 1234`
### killall - Kill Processes by Name
'killall' allows you to kill all processes with a given name.
Example:
`killall firefox`
### pkill - Kill Processes Based on Name and Other Attributes
'pkill' is more flexible than killall, allowing you to kill processes based on various attributes.
Example:
`pkill -u username firefox`
### nice and renice - Adjust Process Priority
'nice' starts a process with a specified priority, while 'renice' changes the priority of a running process.
Nice values range from -20 (highest priority) to 19 (lowest priority).
Example:
- `nice -n 10 command` # Start 'command' with lower priority
- `renice -n 5 -p PID` # Change priority of running process
## 3. Background and Foreground Processes
### Start a process in the background:
`command &`
### Move a running process to the background:
Press Ctrl+Z
### Bring a background process to the foreground:
`fg %job_number`
### List background jobs:
`jobs`
## 4. Advanced Monitoring Tools
### iotop - I/O Monitoring
'iotop' shows I/O usage by processes.
Install:
- `sudo apt install iotop # For Debian/Ubuntu`
- `sudo yum install iotop # For CentOS/RHEL`
Run:
`sudo iotop`
### nethogs - Network Monitoring
'nethogs' shows network usage by process.
Install:
- `sudo apt install nethogs` # For Debian/Ubuntu
- `sudo yum install nethogs` # For CentOS/RHEL
Run:
`sudo nethogs`
### lsof - List Open Files
'lsof' lists open files and the processes using them.
Example (list all network connections):
`sudo lsof -i`
## 5. System Monitoring
### free - Display Amount of Free and Used Memory
`free -h` # -h for human-readable format
### vmstat - Report Virtual Memory Statistics
`vmstat 1` # Report every second
### iostat - Report CPU Statistics and I/O Statistics
`iostat 1` # Report every second
## 6. Process Tracking and Analysis
### strace - Trace System Calls and Signals
'strace' is useful for diagnosing problems with processes.
Example:
`strace command`
### ltrace - Library Call Tracer
'ltrace' is similar to strace but for library calls.
Example:
`ltrace command`
## 7. Continuous Monitoring with watch
The 'watch' command allows you to run any command periodically, showing output in fullscreen.
Example (update process list every 2 seconds and look at top 5 lines of output):
- `watch -n 2 'ps aux | sort -nrk 3,3 | head -n 5'`