cron
定期実行タスクのスケジュール設定・管理を行うスキルです。cronジョブの作成・編集・削除など、時間指定による自動タスク実行を効率的に操作できます。
description の原文を見る
定时任务管理
SKILL.md 本文
スケジュール済みタスク管理
概要
Cron スケジュール済みタスクの設定、ログ監視、トラブルシューティングなどのスキル。
Crontab の基礎
管理コマンド
# 現在のユーザーの crontab を編集
crontab -e
# 現在のユーザーの crontab を表示
crontab -l
# 現在のユーザーの crontab を削除
crontab -r
# 他のユーザーの crontab を管理(root 権限が必要)
crontab -u username -e
crontab -u username -l
時間形式
┌───────────── 分 (0-59)
│ ┌───────────── 時 (0-23)
│ │ ┌───────────── 日 (1-31)
│ │ │ ┌───────────── 月 (1-12)
│ │ │ │ ┌───────────── 曜日 (0-7、0と7は日曜日)
│ │ │ │ │
* * * * * command
特殊文字
* # 任意の値
, # リスト (1,3,5)
- # 範囲 (1-5)
/ # ステップ (*/5 5分ごと)
# 例
0 * * * * # 毎時間整時
*/15 * * * * # 15分ごと
0 9-17 * * * # 9時から17時までの毎時間
0 0 * * 1-5 # 平日の0時
0 0 1,15 * * # 毎月1日と15日の0時
特殊な時間文字列
@reboot # システム起動時
@yearly # 毎年 (0 0 1 1 *)
@monthly # 毎月 (0 0 1 * *)
@weekly # 毎週 (0 0 * * 0)
@daily # 毎日 (0 0 * * *)
@hourly # 毎時間 (0 * * * *)
設定ファイル
ユーザー crontab
# 場所
/var/spool/cron/crontabs/username # Debian/Ubuntu
/var/spool/cron/username # CentOS/RHEL
# 形式
SHELL=/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin
MAILTO=admin@example.com
# タスク
0 2 * * * /usr/local/bin/backup.sh
システム crontab
# /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# 形式:ユーザーフィールドが追加される
# 分 時 日 月 曜日 ユーザー コマンド
0 2 * * * root /usr/local/bin/backup.sh
cron.d ディレクトリ
# /etc/cron.d/myapp
SHELL=/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin
0 * * * * appuser /opt/myapp/hourly-task.sh
0 2 * * * root /opt/myapp/daily-backup.sh
定義済みディレクトリ
/etc/cron.hourly/ # 1時間ごとに実行
/etc/cron.daily/ # 1日ごとに実行
/etc/cron.weekly/ # 1週間ごとに実行
/etc/cron.monthly/ # 1か月ごとに実行
# 実行可能スクリプトを配置するだけ
chmod +x /etc/cron.daily/myscript
ベストプラクティス
スクリプトテンプレート
#!/bin/bash
# /usr/local/bin/cron-task.sh
# ログファイル
LOG_FILE="/var/log/cron-task.log"
# ロックファイル(重複実行を防止)
LOCK_FILE="/var/run/cron-task.lock"
# ロックを確認
if [ -f "$LOCK_FILE" ]; then
echo "$(date): Task already running" >> "$LOG_FILE"
exit 1
fi
# ロックを作成
trap "rm -f $LOCK_FILE" EXIT
touch "$LOCK_FILE"
# 開始をログに記録
echo "$(date): Task started" >> "$LOG_FILE"
# タスクを実行
/path/to/actual/command >> "$LOG_FILE" 2>&1
EXIT_CODE=$?
# 終了をログに記録
echo "$(date): Task finished with exit code $EXIT_CODE" >> "$LOG_FILE"
exit $EXIT_CODE
Crontab エントリ
# 推奨される書き方
# 1. 絶対パスを使用
# 2. 出力をリダイレクト
# 3. コメントを追加
# 日次バックアップ - 午前2時
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
# 5分ごとのヘルスチェック
*/5 * * * * /usr/local/bin/healthcheck.sh > /dev/null 2>&1
# 週次ログクリーンアップ - 日曜日午前3時
0 3 * * 0 /usr/local/bin/cleanup-logs.sh >> /var/log/cleanup.log 2>&1
環境変数
# crontab で設定
SHELL=/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin
HOME=/home/user
MAILTO=admin@example.com
# またはスクリプト内で読み込む
#!/bin/bash
source /etc/profile
source ~/.bashrc
ログと監視
ログを表示
# システムログ
grep CRON /var/log/syslog # Debian/Ubuntu
grep CRON /var/log/cron # CentOS/RHEL
# リアルタイム監視
tail -f /var/log/syslog | grep CRON
# メールを確認(MAILTO が設定されている場合)
cat /var/mail/username
デバッグのコツ
# スクリプトを手動でテスト
/usr/local/bin/myscript.sh
# cron 環境をシミュレート
env -i /bin/bash --noprofile --norc -c '/usr/local/bin/myscript.sh'
# cron サービスの状態を確認
systemctl status cron # Debian/Ubuntu
systemctl status crond # CentOS/RHEL
一般的なシナリオ
シナリオ 1:データベースバックアップ
# 毎日午前2時に MySQL をバックアップ
0 2 * * * /usr/bin/mysqldump -u root -p'password' database | gzip > /backup/db_$(date +\%Y\%m\%d).sql.gz
# 注意:% は \% にエスケープする必要があります
シナリオ 2:ログローテーション
# 毎日ログを圧縮し、7日前のログをクリア
0 0 * * * find /var/log/myapp -name "*.log" -mtime +7 -delete
0 1 * * * gzip /var/log/myapp/*.log.1
シナリオ 3:監視アラート
# 5分ごとにサービスの状態をチェック
*/5 * * * * /usr/local/bin/check-service.sh || /usr/local/bin/send-alert.sh
シナリオ 4:flock を使用して重複を防止
# flock を使用して単一インスタンス実行を確保
*/5 * * * * /usr/bin/flock -n /var/lock/mytask.lock /usr/local/bin/mytask.sh
トラブルシューティング
| 問題 | トラブルシューティング方法 |
|---|---|
| タスクが実行されない | cron サービスの状態とログを確認 |
| 権限エラー | スクリプトとユーザーの権限を確認 |
| 環境変数の問題 | スクリプト内で PATH を設定 |
| コマンドが見つからない | 絶対パスを使用 |
| 出力が失われる | ログファイルにリダイレクト |
# cron サービスを確認
systemctl status cron
# ユーザーが禁止されているかを確認
cat /etc/cron.allow
cat /etc/cron.deny
# 構文をチェック
crontab -l | grep -v '^#' | while read line; do
echo "Checking: $line"
done
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- chaterm
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/chaterm/terminal-skills / ライセンス: Apache-2.0
関連スキル
superfluid
Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper
civ-finish-quotes
実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。
nookplot
Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。
web3-polymarket
Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。
ethskills
Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。
xxyy-trade
このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。