Agent skill

process-management

Production-grade process management - jobs, signals, cron, systemd

Stars 1
Forks 0

Install this agent skill to your Project

npx add-skill https://github.com/pluginagentmarketplace/custom-plugin-bash-shell/tree/main/skills/process-management

SKILL.md

Process Management Skill

Master process control, signals, scheduling, and monitoring

Learning Objectives

After completing this skill, you will be able to:

  • List and inspect running processes
  • Send and handle signals properly
  • Run background jobs and daemons
  • Schedule tasks with cron and systemd
  • Monitor system resources

Prerequisites

  • Bash basics
  • Linux system fundamentals
  • User permissions understanding

Core Concepts

1. Process Inspection

bash
# List processes
ps aux                      # All processes
ps -ef                      # Full format
ps --forest                 # Tree view

# Find processes
pgrep -f "pattern"          # PID by pattern
pidof nginx                 # PID by name
ps aux | grep '[n]ginx'     # Grep trick

# Resource usage
top                         # Real-time view
htop                        # Better interface

2. Signal Handling

bash
# Send signals
kill PID                    # SIGTERM (15)
kill -9 PID                 # SIGKILL (9)
kill -HUP PID               # SIGHUP (1)
killall nginx               # By name
pkill -f "pattern"          # By pattern

# Handle signals in scripts
trap 'cleanup' EXIT
trap 'echo "Interrupted"' INT

cleanup() {
    rm -f "$TEMP_FILE"
    exit 0
}

3. Background Jobs

bash
# Background execution
command &                   # Run in background
nohup command &             # Immune to hangup
nohup cmd > log.txt 2>&1 &  # With logging

# Job control
jobs                        # List jobs
fg %1                       # Foreground job 1
bg %1                       # Background job 1
disown                      # Detach from shell

4. Cron Scheduling

bash
# Cron format
# ┌─── minute (0-59)
# │ ┌─── hour (0-23)
# │ │ ┌─── day of month (1-31)
# │ │ │ ┌─── month (1-12)
# │ │ │ │ ┌─── day of week (0-6)
# * * * * * command

# Examples
0 * * * *     # Every hour
*/15 * * * *  # Every 15 minutes
0 0 * * *     # Daily at midnight
0 0 * * 0     # Weekly on Sunday

# Edit crontab
crontab -e
crontab -l

Common Patterns

Daemon Pattern

bash
start_daemon() {
    nohup ./daemon.sh >> /var/log/daemon.log 2>&1 &
    echo "$!" > /var/run/daemon.pid
    disown
}

stop_daemon() {
    if [[ -f /var/run/daemon.pid ]]; then
        kill "$(cat /var/run/daemon.pid)"
        rm /var/run/daemon.pid
    fi
}

Cron with Locking

bash
# Prevent overlapping runs
0 * * * * /usr/bin/flock -n /var/lock/job.lock /path/to/script.sh

Signal Handler

bash
#!/usr/bin/env bash
set -euo pipefail

cleanup() {
    echo "Cleaning up..."
    rm -f "$TEMP_FILE"
}

trap cleanup EXIT INT TERM

# Main logic
TEMP_FILE=$(mktemp)
# ... work with temp file

Signal Reference

Signal Number Default Common Use
SIGHUP 1 Terminate Reload config
SIGINT 2 Terminate Ctrl+C
SIGQUIT 3 Core dump Ctrl+\
SIGKILL 9 Terminate Force kill
SIGTERM 15 Terminate Graceful stop
SIGSTOP 19 Stop Pause
SIGCONT 18 Continue Resume

Anti-Patterns

Don't Do Why
kill -9 first kill -TERM first Allow cleanup
Kill PID 1 Never Crashes system
Cron without logs Log all output Debug issues

Practice Exercises

  1. Process Monitor: Script to monitor a process
  2. Daemon Script: Create a proper daemon
  3. Cron Job: Schedule a backup job
  4. Signal Handler: Graceful shutdown script

Troubleshooting

Common Errors

Error Cause Fix
No such process Already dead Check with ps
Operation not permitted Wrong owner Use sudo
Cron not running PATH issues Use full paths

Debug Techniques

bash
# Check if process exists
ps -p $PID

# Debug cron
grep CRON /var/log/syslog

# Trace process
strace -p $PID

Resources

Expand your agent's capabilities with these related and highly-rated skills.

Didn't find tool you were looking for?

Be as detailed as possible for better results