install
source · Clone the upstream repo
git clone https://github.com/chaterm/terminal-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/chaterm/terminal-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/linux/process-management" ~/.claude/skills/chaterm-terminal-skills-process-management && rm -rf "$T"
manifest:
linux/process-management/SKILL.mdsource content
Process Management
Overview
Linux process viewing, signal handling, resource limiting and other management skills.
Process Viewing
ps Command
# Common formats ps aux # All process details ps -ef # Full format ps -eo pid,ppid,cmd,%mem,%cpu # Custom columns # Find specific process ps aux | grep nginx ps -C nginx # By command name # Process tree ps auxf pstree pstree -p # Show PID
top/htop
# top interactive commands top # P - Sort by CPU # M - Sort by memory # k - Kill process # q - Quit # htop (more user-friendly) htop
Other Tools
# Sort by resource ps aux --sort=-%cpu | head -10 # Highest CPU ps aux --sort=-%mem | head -10 # Highest memory # View process details cat /proc/PID/status cat /proc/PID/cmdline ls -la /proc/PID/fd # Open file descriptors
Signal Handling
Common Signals
# Signal list kill -l # Common signals # SIGTERM (15) - Graceful termination (default) # SIGKILL (9) - Force termination # SIGHUP (1) - Reload configuration # SIGSTOP (19) - Pause process # SIGCONT (18) - Continue process
kill Command
# Terminate process kill PID # Send SIGTERM kill -9 PID # Force terminate kill -HUP PID # Reload config # Terminate by name pkill nginx pkill -9 -f "python script.py" # Terminate all processes of a user pkill -u username # killall killall nginx killall -9 nginx
Background Tasks
Job Control
# Run in background command & nohup command & # Ignore hangup signal nohup command > output.log 2>&1 & # Job management jobs # View jobs fg %1 # Foreground bg %1 # Background Ctrl+Z # Pause current process
screen/tmux
# screen screen -S session_name # Create session screen -ls # List sessions screen -r session_name # Resume session Ctrl+A D # Detach session # tmux tmux new -s session_name tmux ls tmux attach -t session_name Ctrl+B D # Detach session
Resource Limits
ulimit
# View limits ulimit -a # Set limits ulimit -n 65535 # Max file descriptors ulimit -u 4096 # Max processes ulimit -v unlimited # Virtual memory # Permanent settings /etc/security/limits.conf # * soft nofile 65535 # * hard nofile 65535
cgroups
# View cgroup cat /proc/PID/cgroup # Limit CPU (systemd) systemctl set-property service.service CPUQuota=50% # Limit memory systemctl set-property service.service MemoryLimit=512M
Common Scenarios
Scenario 1: Find and Kill Zombie Processes
# Find zombie processes ps aux | awk '$8=="Z" {print}' # Find parent process ps -o ppid= -p ZOMBIE_PID # Kill parent process kill -9 PARENT_PID
Scenario 2: Find Process Using Port
# Find process using port 80 lsof -i :80 ss -tlnp | grep :80 netstat -tlnp | grep :80 # Kill process fuser -k 80/tcp
Scenario 3: Monitor Process Resources
# Real-time monitor single process top -p PID watch -n 1 "ps -p PID -o %cpu,%mem,cmd" # View files opened by process lsof -p PID
Troubleshooting
| Problem | Solution |
|---|---|
| Process unresponsive | to view system calls |
| CPU 100% | , to analyze hotspots |
| Memory leak | , |
| Zombie process | Find parent process, restart or kill parent |
| Process OOM killed | `dmesg |