Skill 詳細
systemd-services
Relevant server operations specialty, but limited to systemd service management.
使用前に確認
自動レビューは関連性のみを確認し、安全性や推奨を保証しません。使用前に出典の説明を読んでください。
SKILL.md
これはレビュー時に保存された抜粋です。完全で最新の内容は外部ソースを確認してください。
--- name: systemd-services description: Create and manage systemd services and timers. Configure service dependencies and resource limits. Use when managing system services. license: MIT metadata: author: devops-skills version: "1.0" --- # Systemd Services Create, manage, and monitor systemd services and timers. Covers unit file authoring, dependency management, socket activation, resource limits, journalctl log analysis, and production hardening. ## When to Use - Deploying an application as a managed background service - Replacing cron jobs with systemd timers for better logging and dependency control - Setting up socket activation for on-demand service startup - Configuring resource limits (CPU, memory, I/O) for services - Debugging service startup failures and runtime crashes - Managing service dependencies and ordering ## Prerequisites - Linux system running systemd (most modern distributions) - Root or sudo access for creating system-level unit files - Application binary or script to run as a service - Understanding of the application's start/stop lifecycle ## Service Unit File -- Complete Example ```ini # /etc/systemd/system/myapp.service [Unit] Description=MyApp Production Server Documentation=https://docs.example.com/myapp After=network-online.target postgresql.service Wants=network-online.target Requires=postgresql.service [Service] Type=notify User=myapp Group=myapp WorkingDirectory=/opt/myapp # Environment configuration EnvironmentFile=/etc/myapp/env Environment=NODE_ENV=production Environment=PORT=8080 # Execution ExecStartPre=/opt/myapp/bin/migrate --check ExecStart=/opt/myapp/bin/server --config /etc/myapp/config.yaml ExecStartPost=/opt/myapp/bin/healthcheck.sh ExecReload=/bin/kill -HUP $MAINPID ExecStop=/opt/myapp/bin/graceful-stop.sh # Restart behavior Restart=on-failure RestartSec=5 StartLimitIntervalSec=300 StartLimitBurst=5 # Timeouts TimeoutStartSec=30 TimeoutStopSec=30 WatchdogSec=60 # Security hardening NoNewPrivileges=true ProtectSystem=strict ProtectHome=true PrivateTmp=true ReadWritePaths=/var/lib/myapp /var/log/myapp CapabilityBoundingSet= AmbientCapabilities= # Logging StandardOutput=journal StandardError=journal SyslogIdentifier=myapp [Install] WantedBy=multi-user.target ``` ## Service Management Commands ```bash # Reload systemd after creating or modifying unit files systemctl daemon-reload # Start, stop, restart a service systemctl start myapp systemctl stop myapp systemctl restart myapp # Reload service configuration without restart (if supported) systemctl reload myapp # Enable service to start on boot systemctl enable myapp # Enable and start in one command systemctl enable --now myapp # Disable and stop systemctl disable --now myapp # Check service status systemctl status myapp # Check if a service is active, enabled, or failed systemctl is-active myapp systemctl is-enabled myapp systemctl is-failed myapp # List all running services systemctl list-units --type=service --state=running # List all failed services systemctl list-units --type=service --state=failed # Show all properties of a service systemctl show myapp # Show specific property values systemctl show myapp -p MainPID,MemoryCurrent,CPUUsageNSec # Mask a service (prevent it from being started at all) systemctl mask myapp # Unmask systemctl unmask myapp # Reset a failed service state systemctl reset-failed myapp ``` ## Timer Units (Cron Replacement) ### Timer File ```ini # /etc/systemd/system/backup.timer [Unit] Description=Daily backup timer [Timer] # Run daily at 2:30 AM OnCalendar=*-*-* 02:30:00 # If the system was off at the scheduled time, run when it boots Persistent=true # Add random delay up to 15 minutes to avoid thundering herd RandomizedDelaySec=900 # Associate with a specific service (defaults to same name .service) Unit=backup.service [Install] WantedBy=timers.target ``` ### Corresponding Service File ```ini # /etc/systemd/system/backup.service [Unit] Description=Daily backup jobGitHub で全文を読む (外部ページ)