メンテナンス作業の日程を決める際、SSHで接続したサーバー上でカレンダーを確認したい場面があります。ブラウザやGUIを開かなくても、ターミナルだけで任意の月・年のカレンダーを表示し、曜日まで確認できます。
まず結論:任意の月・年のカレンダーを即座に表示する
基本は cal コマンドです。引数なしで実行すると今月のカレンダーが表示されます。
# 今月を表示
cal
# 特定の月を表示(2026年7月)
cal 7 2026
# 年全体を表示(12ヶ月分)
cal 2026
出力例(2026年7月):
July 2026
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
cal は多くのディストリビューションで util-linux パッケージに含まれており、追加インストール不要で使えます。含まれていない場合は以下でインストールできます。
# Debian / Ubuntu 系
sudo apt install util-linux
# RHEL / AlmaLinux / Rocky Linux 系
sudo dnf install util-linux
前後の月もまとめて確認する
作業スケジュールを組む際、前月・当月・翌月を一度に見たいケースは多いです。-3 オプションで3ヶ月分を横並びに表示できます。
# 前月・当月・翌月を横並びで表示
cal -3
任意の月を中心に前後を確認したい場合は、-B(Before)と -A(After)を組み合わせます。
# 2026年9月を中心に、前2ヶ月・後1ヶ月を表示
cal -B 2 -A 1 9 2026
なお -B / -A オプションは util-linux 版の cal で利用可能です。古い BSD 版では使えないことがあるため、環境によっては cal --version でバージョンを確認してください。
特定の日付が何曜日かを正確に調べる
「来年のリリース予定日が何曜日か」を調べるには、date コマンドが確実です。
# 特定の日付の曜日を表示(GNU date)
date -d "2027-03-15" +"%Y-%m-%d (%A)"
# 出力例
2027-03-15 (Monday)
日本語ロケールで曜日を出力したい場合は LANG を指定します。
LANG=ja_JP.UTF-8 date -d "2027-03-15" +"%Y年%m月%d日 (%A)"
# 出力例
2027年03月15日 (月曜日)
注意:date -d は GNU coreutils の機能です。macOS や古い BSD 系では date -d は使えず、代わりに date -j -f "%Y-%m-%d" "2027-03-15" +"%A" の形式になります。Linux サーバー上であれば問題なく動作します。
月曜始まりのカレンダーに切り替える
デフォルトは日曜始まりですが、業務カレンダーに合わせて月曜始まりに変更できます。
# 月曜始まりで表示
cal -m 7 2026
# ncal コマンドは縦方向に曜日を並べる形式
ncal -M 7 2026
ncal は出力が縦向きになるため、横幅が狭いターミナルや、日付を列で確認したいときに便利です。同じく util-linux または bsdmainutils に含まれます。
実務でよく使うパターン集
ある運用現場では、月次メンテナンスの前日確認として以下のワンライナーを使い回しているケースがあります。
# 今日から30日後の日付と曜日を確認
date -d "+30 days" +"%Y-%m-%d (%A)"
# 翌月1日が何曜日かを確認
date -d "$(date +%Y-%m-01) +1 month" +"%Y-%m-%d (%A)"
# 月末日を確認(翌月1日の前日)
date -d "$(date +%Y-%m-01) +1 month -1 day" +"%Y-%m-%d"
年全体のカレンダーをファイルに出力して保存しておく方法も手軽です。定期的にログを見返す運用や、手順書に年間スケジュールを添付する際に使えます。
# 2026年のカレンダーをファイルに保存
cal 2026 > /tmp/calendar_2026.txt
# 特定年のカレンダーをページャーで確認
cal 2026 | less
過去の日付を遡って確認するときも同様です。システムログやインシデント記録の日付を、当時の曜日とともに確認したい場面で役立ちます。
# 2020年2月のカレンダー(うるう年確認)
cal 2 2020
# 特定の過去日付が何曜日だったかを確認
date -d "2020-02-29" +"%Y-%m-%d (%A)"
環境差と注意点のまとめ
現代のLinuxディストリビューション(Ubuntu 22.04以降、AlmaLinux 9、Debian 12など)では、cal と date はいずれも標準搭載されており、追加作業なしで使えます。ただし以下の点に注意が必要です。
コンテナ環境(Alpine Linuxなど):最小構成のコンテナイメージでは cal が含まれていないことがあります。Alpine では apk add util-linux でインストールできます。
macOSとの違い:macOS の cal と date は BSD 系のため、-B/-A や date -d が使えません。Linux サーバーとの操作を混同しないよう注意してください。
スクリプト内での利用:シェルスクリプトで日付計算をする場合、date -d の書式はロケールに依存しない +%Y-%m-%d 形式を使うのが安全です。%A(曜日名)はロケールによって変わるため、スクリプトで曜日の数値(0=日曜)を扱う場合は +%u(月曜=1)や +%w(日曜=0)を使うと確実です。
# 曜日を数値で取得(月曜=1、日曜=7)
date -d "2027-03-15" +%u
# 出力: 1(月曜日)
# 日曜日かどうかをスクリプトで判定する例
if [ "$(date -d '2027-03-15' +%u)" -eq 7 ]; then
echo "日曜日です"
fi
ターミナルだけで完結するため、踏み台サーバー経由の作業中や、ブラウザを開けない環境でも迷わず日程確認が行えます。メンテナンス前の最終確認コマンドとして、手順書に一行加えておくと運用の抜け漏れ防止にもなります。
「コマンドは打てる。次は”現場で通用する型”を最短で身につけたい」——そんなあなたへ。
ネットの断片的なTipsをコピペするだけでは、体系的な運用スキルはなかなか積み上がりません。リナックスマスター.JPの無料メルマガ「リナマガ」では、現場で実際に使うLinuxサーバー運用の考え方を、順を追って実務目線でお届けしています。いま登録された方には、安全なサーバー構築の「型」をまとめた『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼント中です。
>> 図解60P『Linux入門マニュアル』を無料で受け取る
(メルマガ登録は10秒・いつでも解除OK)
※ 「独学の時間がもったいない」「プロから現場の技術を最短で学びたい」という本気の方には、2日で実務レベルが身につく初心者向けハンズオンセミナーもご用意しています。
