os-scripting
Operating system and shell scripting troubleshooting workflow for Linux, macOS, and Windows. Covers bash scripting, system administration, debugging, and automation.
- category
- workflow-bundle
- risk
- safe
- source
- personal
- date added
- 2026-02-27
OS/Shell Scripting Troubleshooting Workflow Bundle
Overview
Comprehensive workflow for operating system troubleshooting, shell scripting, and system administration across Linux, macOS, and Windows. This bundle orchestrates skills for debugging system issues, creating robust scripts, and automating administrative tasks.
When to Use This Workflow
Use this workflow when:
- Debugging shell script errors
- Creating production-ready bash scripts
- Troubleshooting system issues
- Automating system administration tasks
- Managing processes and services
- Configuring system resources
Workflow Phases
Phase 1: Environment Assessment
Skills to Invoke
bash-linux- Linux bash patternsbash-pro- Professional bash scriptingbash-defensive-patterns- Defensive scripting
Actions
- Identify operating system and version
- Check available tools and commands
- Verify permissions and access
- Assess system resources
- Review logs and error messages
Diagnostic Commands
# System information uname -a cat /etc/os-release hostnamectl # Resource usage top htop df -h free -m # Process information ps aux pgrep -f pattern lsof -i :port # Network status netstat -tulpn ss -tulpn ip addr show
Copy-Paste Prompts
Use @bash-linux to diagnose system performance issues
Phase 2: Script Analysis
Skills to Invoke
bash-defensive-patterns- Defensive scriptingshellcheck-configuration- ShellCheck lintingbats-testing-patterns- Bats testing
Actions
- Run ShellCheck for linting
- Analyze script structure
- Identify potential issues
- Check error handling
- Verify variable usage
ShellCheck Usage
# Install ShellCheck sudo apt install shellcheck # Debian/Ubuntu brew install shellcheck # macOS # Run ShellCheck shellcheck script.sh shellcheck -f gcc script.sh # Fix common issues # - Use quotes around variables # - Check exit codes # - Handle errors properly
Copy-Paste Prompts
Use @shellcheck-configuration to lint and fix shell scripts
Phase 3: Debugging
Skills to Invoke
systematic-debugging- Systematic debuggingdebugger- Debugging specialisterror-detective- Error pattern detection
Actions
- Enable debug mode
- Add logging statements
- Trace execution flow
- Isolate failing sections
- Test components individually
Debug Techniques
# Enable debug mode set -x # Print commands set -e # Exit on error set -u # Exit on undefined variable set -o pipefail # Pipeline failure detection # Add logging log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" >> /var/log/script.log } # Trap errors trap 'echo "Error on line $LINENO"' ERR # Test sections bash -n script.sh # Syntax check bash -x script.sh # Trace execution
Copy-Paste Prompts
Use @systematic-debugging to trace and fix shell script errors
Phase 4: Script Development
Skills to Invoke
bash-pro- Professional scriptingbash-defensive-patterns- Defensive patternslinux-shell-scripting- Shell scripting
Actions
- Design script structure
- Implement functions
- Add error handling
- Include input validation
- Add help documentation
Script Template
#!/usr/bin/env bash set -euo pipefail # Constants readonly SCRIPT_NAME=$(basename "$0") readonly SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) # Logging log() { local level="$1" shift echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $*" >&2 } info() { log "INFO" "$@"; } warn() { log "WARN" "$@"; } error() { log "ERROR" "$@"; exit 1; } # Usage usage() { cat <<EOF Usage: $SCRIPT_NAME [OPTIONS] Options: -h, --help Show this help message -v, --verbose Enable verbose output -d, --debug Enable debug mode Examples: $SCRIPT_NAME --verbose $SCRIPT_NAME -d EOF } # Main function main() { local verbose=false local debug=false while [[ $# -gt 0 ]]; do case "$1" in -h|--help) usage exit 0 ;; -v|--verbose) verbose=true shift ;; -d|--debug) debug=true set -x shift ;; *) error "Unknown option: $1" ;; esac done info "Script started" # Your code here info "Script completed" } main "$@"
Copy-Paste Prompts
Use @bash-pro to create a production-ready backup script
Use @linux-shell-scripting to automate system maintenance tasks
Phase 5: Testing
Skills to Invoke
bats-testing-patterns- Bats testing frameworktest-automator- Test automation
Actions
- Write Bats tests
- Test edge cases
- Test error conditions
- Verify expected outputs
- Run test suite
Bats Test Example
#!/usr/bin/env bats @test "script returns success" { run ./script.sh [ "$status" -eq 0 ] } @test "script handles missing arguments" { run ./script.sh [ "$status" -ne 0 ] [ "$output" == *"Usage:"* ] } @test "script creates expected output" { run ./script.sh --output test.txt [ -f "test.txt" ] }
Copy-Paste Prompts
Use @bats-testing-patterns to write tests for shell scripts
Phase 6: System Troubleshooting
Skills to Invoke
devops-troubleshooter- DevOps troubleshootingincident-responder- Incident responseserver-management- Server management
Actions
- Identify symptoms
- Check system logs
- Analyze resource usage
- Test connectivity
- Verify configurations
- Implement fixes
Troubleshooting Commands
# Check logs journalctl -xe tail -f /var/log/syslog dmesg | tail # Network troubleshooting ping host traceroute host curl -v http://host dig domain nslookup domain # Process troubleshooting strace -p PID lsof -p PID iotop # Disk troubleshooting du -sh /* find / -type f -size +100M lsof | grep deleted
Copy-Paste Prompts
Use @devops-troubleshooter to diagnose server connectivity issues
Use @incident-responder to investigate system outage
Phase 7: Automation
Skills to Invoke
workflow-automation- Workflow automationcicd-automation-workflow-automate- CI/CD automationlinux-shell-scripting- Shell scripting
Actions
- Identify automation opportunities
- Design automation workflows
- Implement scripts
- Schedule with cron/systemd
- Monitor automation health
Cron Examples
# Edit crontab crontab -e # Backup every day at 2 AM 0 2 * * * /path/to/backup.sh # Clean logs weekly 0 3 * * 0 /path/to/cleanup.sh # Monitor disk space hourly 0 * * * * /path/to/monitor.sh
Systemd Timer Example
# /etc/systemd/system/backup.timer [Unit] Description=Daily backup timer [Timer] OnCalendar=daily Persistent=true [Install] WantedBy=timers.target
Copy-Paste Prompts
Use @workflow-automation to create automated system maintenance workflow
Common Troubleshooting Scenarios
High CPU Usage
top -bn1 | head -20 ps aux --sort=-%cpu | head -10 pidstat 1 5
Memory Issues
free -h vmstat 1 10 cat /proc/meminfo
Disk Space
df -h du -sh /* 2>/dev/null | sort -h find / -type f -size +500M 2>/dev/null
Network Issues
ip addr show ip route show ss -tulpn curl -v http://target
Service Failures
systemctl status service-name journalctl -u service-name -f systemctl restart service-name
Quality Gates
Before completing workflow, verify:
- All scripts pass ShellCheck
- Tests pass with Bats
- Error handling implemented
- Logging configured
- Documentation complete
- Automation scheduled
Related Workflow Bundles
development- Software developmentcloud-devops- Cloud and DevOpssecurity-audit- Security testingdatabase- Database operations