ローカル環境(Vagrantを使用)で、未来日付での動作確認を行いたいケースに遭遇しました。最初はサーバのシステム時間を変更すればいいのでは?と簡単に思っておりました。いつもの通りVagrantで仮想環境を作成して、Webmin + Virtualmin をインストール後に、Webminの設定からシステム時間を変更・・・?!できません。
なぜかしらと思い調べてみますと、どうもVirtualboxで自動時刻同期を行なっている事が判明しました。
以下コマンドによりVirtualboxの時刻同期を無効化できます。
rootで実行 service vboxadd-service stop or systemctl stop vboxadd-service
無効化したのち、dateコマンドで時刻を設定します。
date -s "2023/11/01 10:00:00" Wed Nov 1 10:00:00 JST 2023
dateの結果が表示されている通り、時刻変更ができました。
時刻同期を再度有効化するにはゲストOSをシャットダウンするか
service vboxadd-service start or systemctl start vboxadd-service
上記コマンドを実行する事で有効化できます。
ここで今更ながら思ったのですが、serviceとsystemctlの違いって何だろうと思い、備忘を兼ねて調べてみました。
serviceは、/etc/init.dにあるシェルスクリプトのファイルを指定することで、シェルを実行してくれます。
systemctlは/lib/systemdにある設定ファイルを指定して、コマンドを実行します。
ただ、CentOS7からはSystemdでのサービス管理に変更となったため、以下のような起動方法が使用できません。
例) /etc/rc.d/init.d/sshd restart
なので基本的には、以下を使用します。
systemctl start サービス名
現在ではserviceコマンドを実行するとsystemctlにリダイレクトされます。
例) service vboxadd-service stop Redirecting to /bin/systemctl stop vboxadd-service.service
ちなみに、現在有効なサービス一覧の表示を行う場合
systemctl list-unit-files -t service
で確認できます。サーバのセキュリティ面を考えますと、上記コマンドで不要なサービスが動作していないかを確認することも大事かと思います。