はじめに
今回は、とあるスクールのカリキュラムを参考に、初めてバッチ処理を実装していた時の話です。
cronを利用して削除プログラムを定時処理として実行させようとしていたところ、エラーが発生してしまいました。
自身の備忘録として、また同じようなエラーに遭遇された方の参考になればと思い投稿させて頂いております。
(参考)
・crontabコマンド
https://it-mikeiken.com/crontab-command
・CentOSのバージョン確認
https://ja.stackoverflow.com/questions/66504/centos%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%A2%BA%E8%AA%8D
開発環境
Ruby 2.6.3
Rails 5.2.4.4
AWS Cloud9(Amazon Linux)
エラーの内容
推奨されていたコマンドがこちらですが、どちらも同じエラーで弾かれてしまいます。
# cronが起動しているか確認するコマンド
$ sudo systemctl status crond
sudo: systemctl: command not found
# cronを起動するコマンド
$ sudo systemctl start crond
sudo: systemctl: command not found
解決策
以下のコマンドを実行することで、cronを起動、そして起動しているかを確認することが出来ました。
# cronが起動しているか確認するコマンド(どちらも可)
$ sudo service crond status
or
$ sudo /etc/rc.d/init.d/crond status
# cronを起動するコマンド(どちらも可)
$ sudo service crond start
or
$ sudo /etc/rc.d/init.d/crond start
エラーが起きた原因
CentOS6以前とCentOS7以降からでは、コマンドが変わっている
という記事を発見しました。
そこで、自身のバージョンを確認してみようと思い、以下のようにコマンドを入力すると、「No such file or directory」、つまり「そのようなファイルやディレクトリはありません」と言われてしまいます。
# CentOSのバージョンを確認するコマンド
$ cat /etc/redhat-release
No such file or directory
この時点で、そもそもOSってなんだっけ?と思い始めたわけです。
OSについて検索をしてみると、ある記事に「システム全体を管理し、様々なアプリケーションソフトを動かすための最も基本的なソフトウェア」と定義されていました。
更に調べてみると、私が開発環境で使用しているAWSのCloud9、「Amazon Linux」もCentOS/RHEL系に分類されるLinux OS
の一つだということが分かりました。OSの一つではあるが、CentOS
とは異なるためファイルがないと言われてしまったということです。
Amazon Linuxのバージョンを調べるコマンドも見つけたので、一応下記に掲載しておきます。
# Amazon Linuxのバージョン確認コマンド
$ cat /etc/system-release
Amazon Linux AMI release 2018.03
結論
今回自身の結論としましては、OSの種類が違うとコマンドが変わるということで一度納得をすることにしました。まだまだ知識不足で、これらのコマンドがどう違い、どのOSにどのコマンドが正しいかというところまでは理解することが出来ませんでしたので、今後の課題としたいと思います。
もし詳しい方がいらっしゃいましたら、ご教授いただければ嬉しく思います。
終わり
今回は以上になります。
私自身もプログラミング初心者ですが、同じ様な立場の方に少しでも参考になればと思っています。
また、もし内容に誤りなどがございましたら、ご指摘いただけますと幸いです。