Linux-Skills:定时自动执行脚本或者其他命令,例如实现定时自动开关机

利用Linuxcrontab实现自动化定时任务与服务器管理

Linux-Skills:定时自动执行脚本或者其他命令,例如实现定时自动开关机

Intro

在管理服务器的时候,有时候需要服务器自动开关机,或者定期执行某些指令。linux自带的crontab命令可以实现定时自动执行的命令,在终端内 $ sudo crontab -e 后编辑文件中的内容即可。

测试机器:ubuntu 22.04;


Solution

1. 终端内执行 $ sudo crontab -e

执行 $ sudo crontab -e

 $ sudo crontab -e 

第一次执行的话会弹出让你选择编辑器的选项,我选择vim。


2. 按照规定格式添加命令:

如果我想实现每周三22:00执行一个脚本,可以在 “1.” 打开的文件中添加如下命令:

0 15 * * 3 /path/to/your/script.sh

这里各部分的含义如下:

  • 0: 分钟,表示0分钟。
  • 22: 小时,即晚上22点。
  • *: 代表每月的每一天。
  • *: 代表每年的每一月。
  • 3: 代表星期中的第三天,即周三(在cron中,周日是一周的第一天,即0,周一到周六分别是1到6)。
  • /path/to/your/script.sh 是您的脚本文件的完整路径,需要替换为实际路径。

注意,各变量之间有空格。


比如我想在每周天22点服务器自动关机,早上8点自动开机,可以撰写一个脚本。

以下是我写的脚本,叫 shutdown_wake.sh,其接受一个参数,代表关机后多少小时后重启:

#!/bin/bash

# Function to display script usage
function display_help {
    echo "Usage: $0 [-h|--help] <shutdown_hours>"
    echo "  -h, --help                Display this help message."
    echo "  <shutdown_hours>          Number of hours until shutdown and wakeup."
    exit 0
}

# Check if the help option is provided
if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
    display_help
fi

# Check if the required argument is provided
if [ $# -eq 0 ]; then
    echo "Please provide the number of hours for shutdown as an argument."
    display_help
    exit 1
fi

# Validate if the argument is a valid number
if ! [[ "$1" =~ ^[0-9]+(\.[0-9]+)?$ ]]; then
    echo "Invalid input. Please provide a valid number for shutdown hours."
    exit 1
fi

shutdown_hours=$1

# Round the result to the nearest integer
shutdown_seconds=$(echo "($shutdown_hours * 3600 + 0.5)/1" | bc)

echo "The system will shut down and wake up after $shutdown_hours hours."

# Use rtcwake to shut down and wake up the system
sudo rtcwake -m off -s $shutdown_seconds
#rtcwake -m off -s $shutdown_seconds

# Add any commands to be executed after the system restarts

echo "The system has awakened."

将该脚本保存在某一路径下,重复"1. "
中的 $ sudo crontab -e 打开编辑文件,增加如下内容:

0 22 * * * /path/to/shutdown_wake.sh 10

参数10代表关机10小时后重启。



根据文档要求配置linux,Centos7系统(三)服务器AppSrv上的工作任务 1.SSH 安装SSH,工作端口监听在2101。 仅允许InsideCli客户端进行ssh访问,其余所有主机的请求都应该拒绝。 在cskadmin用户环境下可以免秘钥登录,并且拥有root控制权限。 2.DHCP 为InsideCli客户端网络分配地址,地址池范围:192.168.0.110-192.168.0.190/24。 域名解析服务器:按照实际需求配置DNS服务器地址选项。 网关:按照实际需求配置网关地址选项。 为InsideCli分配固定地址为192.168.0.190/24。 3.DNS 为ynskills.cn域提供域名解析。 为www.ynskills.cn、download.ynskills.cn和mail.ynskills.cn提供解析。 启用内外网解析功能,当内网客户端请求解析的时候,解析到对应的内部服务器地址,当外部客户端请求解析的时候,请把解析结果解析到提供服务的公有地址。 请将IspSrv作为上游DNS服务器,所有未知查询都由该服务器处理。 4.WEB服务 安装WEB服务。 服务以用户webuser系统用户运行。 限制web服务只能使用系统500M物理内存。 全站点启用TLS访问,使用本机上的“YNCK Global Root CA”颁发机构颁发,网站证书信息如下: C = CN ST = YN L = Kunming O = skills OU = Operations Departments CN = *.ynskills.cn 当用户使用http访问时自动跳转到https安全连接。 搭建www.ynskills.cn站点。 网页文件放在StorgeSrv服务器上。 在StorageSrv上安装MriaDB,在本机上安装PHP,发布WordPress网站。 MariaDB数据库管理员信息:User: root/ Password: YNSkills24。 创建网站download.ynskills.cn站点。 设置三个用户名中的一个zsuser/lsusr/wuusr和密码可以登录 网页文件存放在StorageSrv服务器上。 在该站点的根目录下创建以下文件“test.mp3, test.mp4, test.pdf”,其中test.mp4文件的大小为1G,页面访问成功后能够列出目录所有文件。 5.Mariadb Backup Script 脚本文件:/shells/mysqlbk.sh。 备份数据到/root/mysqlbackup 目录。 备份脚本每隔30分钟实现自动备份。 导出的文件名为 all-databases-20240213102333, 其中 20240213102333 为运行备份脚本的当前时间,精确到秒。 6.MAIL 安装配置postfix和dovecot,启用imaps和smtps,并创建测试用户mailuser1和mailuser2。 使用mailuser1@ynskills.cn的邮箱向mailuser2@ynskills.cn的邮箱发送一封测试邮件,邮件标题为“just test mail from mailuser1”, 邮件内容为“hello , mailuser2”。 使用mailuser2@ynskills.cn的邮箱向mailuser1@ynskills.cn的邮箱发送一封测试邮件,邮件标题为“just test mail from mailuser2”, 邮件内容为“hello , mailuser1”。 添加广播邮箱地址all@ynskills.cn,当该邮箱收到邮件时,所有用户都能在自己的邮箱中查看。 7.CA(证书颁发机构) CA根证书路径/csk-rootca/csk-ca.pem。 签发数字证书,颁发者信息:(仅包含如下信息) C = CN ST = YN L = Kunming O = skills OU = Operations Departments CN = YNSK Global Root CA 8.chrony •配置为全网提供时间同步服务器。 •为除本机外的 所有主机提供时间同步服务。 •使用ntpdate命令每隔30分钟同步一次时间。。要求详细的步骤及其完整命令
最新发布
10-10
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值