Agent Skills: Process Management Skill

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

UncategorizedID: pluginagentmarketplace/custom-plugin-bash-shell/process-management

Skill Files

Browse the full folder contents for process-management.

Download Skill

Loading file tree…

skills/process-management/SKILL.md

Skill Metadata

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

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

# 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

# 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

# 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

# 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

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

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

Signal Handler

#!/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

# Check if process exists
ps -p $PID

# Debug cron
grep CRON /var/log/syslog

# Trace process
strace -p $PID

Resources