mc服务器自重启/自备份脚本
创建文件
首先,我们需要创建一个脚本
新建一个auto.sh
文件
赋予他执行权限
chmod +x /root/auto.sh
内容如下
#!/usr/bin/bash
echo "Hello, World!"
其中第一行是指定脚本使用 Bash Shell 解释器,可以使用下面的命令查看
which bash
接下来尝试运行
./auto.sh
出现了如下报错
-bash: ./auto.sh: /usr/bin/bash^M: bad interpreter: No such file or directory
原因是我在windows上进行的编辑,换行符与linux不同,所以在linux里面使用vim进行编辑
vim auto.sh
然后输入
:set fileformat=unix
:wq
再次尝试运行,发现能够正常运行
设置开机自启动和循环
编辑 cron
配置文件:
crontab -e
首次使用时他让我选择编辑器
root@RXXX:~# crontab -e
no crontab for root - using an empty oneSelect an editor. To change later, run 'select-editor'.1. /bin/nano <---- easiest2. /usr/bin/vim.basic3. /usr/bin/vim.tiny4. /bin/edChoose 1-4 [1]:
这里我就选择vim了,输入2然后enter
使用@reboot
,在末尾添加该行,第一行是开机自启动,第二行是每隔一分钟启动一次
@reboot /root/auto.sh ##
* * * * * /root/auto.sh
然后一直没有循环,通过
sudo tail -f /var/log/syslog
查看日志,结果如下
Dec 21 16:59:58 RainYun-Qwkr5UGW qemu-ga: info: guest-exec called: "/bin/bash -c grep MemAvailable /proc/meminfo"
Dec 21 16:59:58 RainYun-Qwkr5UGW qemu-ga: info: guest-ping called
Dec 21 16:59:58 RainYun-Qwkr5UGW qemu-ga: info: guest-exec-status called, pid: 5592
Dec 21 16:59:59 RainYun-Qwkr5UGW qemu-ga: info: guest-ping called
Dec 21 17:00:01 RainYun-Qwkr5UGW CRON[5595]: (root) CMD (/root/auto.sh)
Dec 21 17:00:01 RainYun-Qwkr5UGW CRON[5593]: (CRON) info (No MTA installed, discarding output)
Dec 21 17:01:01 RainYun-Qwkr5UGW CRON[5603]: (root) CMD (/root/auto.sh)
Dec 21 17:01:01 RainYun-Qwkr5UGW CRON[5602]: (CRON) info (No MTA installed, discarding output)
Dec 21 17:02:01 RainYun-Qwkr5UGW CRON[5608]: (root) CMD (/root/auto.sh)
Dec 21 17:02:01 RainYun-Qwkr5UGW CRON[5607]: (CRON) info (No MTA installed, discarding output)
似乎是成功的运行了,但是 (No MTA installed, discarding output)
说明 没有邮件传输代理(MTA),我无法接收到信息
chatGPT提到能将输出重定向到文件中,但需要反复查看日志,故舍弃
新方法是重定向到终端
通过命令
tty
查看到终端位置如下
/dev/pts/2
然后修改cron任务
* * * * * /root/auto.sh | tee /dev/pts/2
成功了
但是!!
这个终端是变的,当我新开了个终端时,pts/后面的数字变了,所以最终可能还是需要输入到日志中
>> /root/logfile.log 2>&1
>>
表示追加,```2>&a``表示将错误信息也一并写入其中
最后是
* * * * * /root/auto.sh >> /root/auto_file.log 2>&1