Ubuntu/Linux开机自启动脚本创建方法

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 one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 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
posted @ 2024-12-27 16:21  aisspire  阅读(272)  评论(0)    收藏  举报