简介
systemd不仅可以管理系统中的各个服务,还具有许多有趣和实用的功能。在这篇博客中,我将向你介绍如何使用systemd进行时间同步,磁盘挂载和执行定时任务。
时间同步:使用systemd-timesyncd
systemd-timesyncd
是一个简单的网络时间同步守护程序,你可以用它来同步你的系统时间。首先,我们需要禁用本机的NTP服务,例如我本机使用的chrony:
systemctl disable chrony && systemctl stop chrony
然后,我们可以使用timedatectl status
命令来查看本机的NTP服务状态。接着,我们需要检查systemd-timesyncd
服务的状态:
systemctl status systemd-timesyncd
如果你看到以下输出:
○ systemd-timesyncd.service
Loaded: masked (Reason: Unit systemd-timesyncd.service is masked.)
Active: inactive (dead)
这表示你的服务被屏蔽了。要取消屏蔽,输入以下命令:
systemctl unmask systemd-timesyncd
接着启动服务:
systemctl start systemd-timesyncd
如果提示Failed to start systemd-timesyncd.service: Unit systemd-timesyncd.service not found.
,表示你系统中的systemd-timesyncd
包未安装,可以通过以下命令进行安装:
apt-get install systemd-timesyncd
安装完成后,启动服务:
systemctl start systemd-timesyncd
如果你想修改NTP服务器,可以编辑/etc/systemd/timesyncd.conf
文件:
vim /etc/systemd/timesyncd.conf
修改为:
[Time]
NTP=cn.ntp.org.cn
最后,重启服务并配置为开机启动:
systemctl restart systemd-timesyncd
systemctl enable systemd-timesyncd
最后查看状态
timedatectl
磁盘挂载:使用systemd挂载NFS
要使用systemd挂载磁盘,你需要创建一个.mount
文件。例如,我们创建一个名为root-test.mount
的文件:
vim /etc/systemd/system/root-test.mount
并添加以下内容:
[Unit]
Description=Mount NFS
[Mount]
What=10.10.100.244:/volume1/data
Where=/root/test
Type=nfs
Options=defaults
[Install]
WantedBy=multi-user.target
注意,.mount
文件的文件名必须与挂载的路径相符。例如,如果挂载的路径地址是/root/test
,那么文件的名字就必须是root-test.mount
。否则,你会看到如下错误信息:
nfs-test.mount: Where= setting doesn't match unit name. Refusing.
创建完成后,使用以下命令启动挂载:
systemctl start root-test.mount
你可以使用systemctl stop root-test.mount
命令来卸载文件系统,使用systemctl enable root-test.mount
命令来设置开机启动挂载。
执行定时任务:使用systemd定时器
systemd还可以配置用来执行定时任务。首先,我们需要创建一个service。例如,我们创建一个名为date.service
的文件:
vim /etc/systemd/system/date.service
并添加以下内容:
[Unit]
Description=log date
Wants=logdate.timer
[Service]
Type=oneshot
ExecStart=sh -c 'date > /var/date.log'
[Install]
WantedBy=multi-user.target
你可以使用systemctl status logdate
命令来查看服务状态。
接着,我们需要创建一个定时器。例如,我们创建一个名为logdate.timer
的文件:
vim /etc/systemd/system/logdate.timer
并添加以下内容:
[Unit]
Description=Exec logmemory
Requires=date.service
[Timer]
Unit=date.service
OnCalendar=*-*-* *:*:00
[Install]
WantedBy=timers.target
我在这里配置的是每分钟执行一次logmemory.service
这个服务。
启动这个定时器:
systemctl start logdate.timer
你可以使用systemctl status logdate.timer
命令来查看定时器状态。
欢迎关注我的博客www.bboy.app
Have Fun