各位大佬们好,我也是通过网络上各种搜索资源学习linux命令功能。
而现在我在使用的PVE系统中linux命令和环境基本相通:
第一个目标是我想使用.sh脚本实现ping指定虚拟机,若不通则关闭该虚拟机,等待10秒后启动虚拟机,我创建了一个.sh脚本,脚本绝对路径为:/root/103VM.sh命令如下:
#!/bin/bash
VMID="103" # 替换为你的虚拟机ID
IP="10.10.11.4" # 替换为你要Ping的虚拟机IP
if ! ping -c 1 -W 1 $IP > /dev/null; then
echo "Ping failed. Stopping VM 103 for 10 seconds."
qm stop $VMID
sleep 10
qm start $VMID
fi
保存好.sh文件后,我通过chmod +x 赋予了该脚本权限,手动使用bash运行.sh脚本可以正常运行。在不通的情况下命令提示:
Ping failed. Stopping VM 103 for 10 seconds.
脚本功能正确。确认能够关闭虚拟机和开启虚拟机。
第二个目标就是想通过linux自带的cron服务来实现定时运行脚本,从而实现检测虚拟机是否能ping通来实现重启该虚拟机的功能,但也许是我翻阅资料不够的问题,始终无法实现定时运行脚本。
1.通过crontab -e来配置需要运行的脚本。先使用service cron stop停止服务然后添加配置。
2.添加配置如下:0 */3 * * * /root/103VM.sh
3.按照翻阅的资料,该命令为每3分钟的0秒运行root文件夹的.sh脚本文件,保存后使用service cron start启动服务。
使用systemctl enable cron实现服务开机自启。(此刻并没有关机重启PVE),随后等待5分钟并未发现虚拟机被关闭然后启动。手动运行.sh脚本虚拟机就被关闭后启动了。我本以为是需要重启PVE才能实现,手动重启PVE后,想要的功能依旧未能实现。
4.使用命令:systemctl status cron.service
查看服务
cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled; preset: enabled)
Active: active (running) since Tue 2024-09-03 15:46:15 CST; 3s ago
Docs: man:cron(8)
Main PID: 51119 (cron)
Tasks: 1 (limit: 19020)
Memory: 336.0K
CPU: 2ms
CGroup: /system.slice/cron.service
└─51119 /usr/sbin/cron -f
Sep 03 15:46:15 jzeaker systemd[1]: Started cron.service - Regular background program processing daemon.
Sep 03 15:46:15 jzeaker cron[51119]: (CRON) INFO (pidfile fd = 3)
Sep 03 15:46:15 jzeaker cron[51119]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
服务正常启动,但是脚本功能未能实现。手动运行.sh脚本,脚本功能正常,但是没有实现定时运行脚本的功能。
总结,脚本权限正常,脚本功能正常,脚本绝对路径正常,cron服务正常启动,但脚本定时运行不能实现。我在网上搜索问题所在原因都尝试过,均无法实现定时运行,可能是我个人对其理解依旧不够,所以想问问在坐的大佬能否解答一二,万分感谢。