场景介绍:
在Linux中,我们通常开启服务需要使用systemctl start 服务名 命令,这样,如果开启一个服务还好,但是如果同时开启多个服务,难免会感到麻烦,这时,我们可以自定义一个脚本,去把多个开启服务的命令集合到一起,我们只需要执行脚本 即可快速开启多个服务。
一、代码
cd / #进入根目录
mkdir myScript #创建文件夹
vim init.sh #编辑init.sh,然后保存
#!/bin/sh
#用于开机后,快速同时启动指定服务的脚本
systemctl start nginx
systemctl start redis-server
echo nginx和redis已经启动完毕
systemctl status nginx
systemctl status redis-server
chmod 777 init.sh #赋予文件执行权限
/myScript/init.sh #执行init.sh
注:这里,我在脚本里定义了开启nginx和redis服务,并且开启之后输出提示语句,查询nginx和redis状态,确认开启完毕。
二、效果展示
注:直接执行指定目录中的指定文件
三、Linux写定时脚本
在业务场景中,定时脚本也会时有用到,这里再额外介绍下怎么写定时脚本
注:这里使用的是crontab
1、crontab -e #写定时任务
2、* * * * * /myScript/task_test.sh #在文件中添加这一行,然后保存(每分钟执行一次task_test.sh文件)
3、task_test.sh代码
#!/bin/sh
echo yes >> /data/task_test.txt
注意:编辑完task_test.sh,需要赋予文件权限,chmod 777 /myScript/task_test.sh
4、过几分钟后,查看/data/task_test.txt
说明定时任务执行成功。
注:
1、crontab参数
-e 编辑该用户的计时器设置。
-l 列出该用户的计时器设置。
-r 删除该用户的计时器设置。
-u<用户名称> 指定要设定计时器的用户名称。
2、crontab格式
crontab 格式:分钟 小时 日 月 周 command
第1列表示分钟 0~59 (每分钟用*或者 */1表示)
第2列表示小时 0~23(0表示0点)
第3列表示日期 1~31(5表示5号)
第4列 表示月份 1~12(1表示1月份)
第5列表示星期 0~7(0或者7表示星期日)
第6列表示要执行的命令(可以是系统命令,也可以是自己编写的脚本文件)
3、在以上各个字段中,还可以使用以下特殊字符:
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
示例:
30 21 * * * /myScript/task_test.sh 就表示 每天的21:30执行一次task_test.sh文件
30 21 5 * * /myScript/task_test.sh 就表示 每个月的5号21:30执行一次task_test.sh文件
1 6 20 8 * /myScript/task_test.sh 就表示 8月20号06:01执行一次task_test.sh文件
30 2 * * 1,2,3,4,5 systemctl restart nginx 就表示 每个工作日的2:30重启nginx服务
* 23-7/1 * * * systemctl restart smb 就表示晚上11点到早上7点之间,每隔一小时重启smb
注:了解更多,可以访问:https://www.cnblogs.com/intval/p/5763929.html