linux进阶 --- 环境搭建、单一执行、循环执行
环境搭建
- 操作环境 : 创建完虚拟机,安装命令行界面的linux操作系统(centos8,rocky8,rhel8)
- 为服务器配置白名单和安全组 :vim /etc/selinux/config,selinux=disabled
- (getenforce:查看selinux工作模式)
- 关闭防火墙 :systemctl disable firewalld
- 网络设置 :在NAT模式下,配置至少一个可上网的静态IP
- 写好yum源(本地源,网络源)
- 安装好相应的常用工具 :vim,netstat,bash-completion,chrony
- 让你的系统时间可以自动根据时间服务器进行同步
- 写好当前局域网内主机的hosts文件
- 做快照
getenforce:查看selinux工作模式
- enforcing:强制模式:会组织进程访问对应的资源(不符合selinux策略规则的情况)。
- permissive:宽容模式:只会有告警,不会阻止进程来访问资源
- disabled:关闭selinux
临时更改:将其改为permissive模式
(告警会打印到 /var/log/messages/ 文件中)
永久修改:修改配置文件
服务设置
- systemctl start/stop/restart service_name : 启动/停止/重启服务
- systemctl status service_name:查看服务状态
- systemctl enable service_name:设置开机自启动服务
- systemctl disable service_name:禁用服务
yum源配置
1>查看本地的repo文件
[root@localhost yum.repos.d]# ll
total 4
-rw-r--r--. 1 root root 358 Jun 4 00:35 redhat.repo
1>修改名字,让其失效
[root@tianqinwei yum.repos.d]# mv redhat.repo redhat.repo.bak
3>进入vim编辑
[root@tianqinwei yum.repos.d]# vim rhel8.repo
[BaseOS]
name=BaseOS
baseurl=https://mirrors.aliyun.com/centos/8.5.2111/BaseOS/x86_64/os/
gpgcheck=0
[AppStream]
name=AppStream
baseurl=https://mirrors.aliyun.com/centos/8.5.2111/AppStream/x86_64/os/
gpgcheck=0
4>检查
[root@tianqinwei yum.repos.d]# yum repolist
单一执行的例行性工作
(1)命令:at ---> atd(服务)
[root@localhost ~]# systemctl status atd
● atd.service - Job spooling tools
Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2023-06-04 01:03:35 CST; 9h ago
Main PID: 1017 (atd)
Tasks: 1 (limit: 11366)
Memory: 668.0K
CGroup: /system.slice/atd.service
└─1017 /usr/sbin/atd -f
Jun 04 01:03:35 localhost.localdomain systemd[1]: Started Job spooling tools.
<1> 使用流程
使用 at 命令来生成所要运行的工作,并将这个工作,以文本方式写入/var/spool/at/目录内,该工作便能等待 atd 这个服务的取用与执行了。
[root@localhost ~]# cd /var/spool/at
[root@localhost at]# ll
total 0
drwx------. 2 root root 6 Aug 12 2018 spool
权限分配:/etc/at.allow和/etc/at.deny 这两个文件来进行 at 的使用限制
[root@localhost ~]# find /etc/ -name "*.deny"
/etc/hosts.deny
/etc/cron.deny
/etc/at.deny
*:任意字符重复任意多次
?:重复1次以上
{n1..n5}:连续的n1-n5
{n1,n3}:n1,n3文件,不连续
<2> 文件使用权限
- 寻找到/etc/at.allow文件存在,写在这个文件的用户才能使用at命令
- /etc/at.allow不存在,则寻找/etc/at.deny文件,写在该文件的用户不能使用at命令
- 若两个文件都不存在,那么只有root可以使用at命令
PS:假设系统上的所有用户都是可信任的,所以允许所有人使用 at 命令,/etc/at.deny 文件为空,如果你想设置拒绝某人使用 at 命令,你可将该用户写入/etc/at.deny文件
<3> 命令格式:
附:命令的三个组成部分:what,how,who
- cmd --> what,做什么
- option --> how,如何去做
- arg --> who,对谁做
例:建立邮件收发
<1> 下载sendmail和mailx软件
[root@localhost at]# yum install sendmail -y
[root@localhost at]# yum install mailx -y
<2> 启动sendmail
[root@localhost ~]# systemctl start sendmail
<3> 发送邮件
[root@localhost ~]# echo "this is a first email" | mail -s "email" student
发送对象为:student
发送邮件的命令:mail
设置邮件标题:-s
邮件内容为:"this is a first email"
<4> 查看接收情况
[root@localhost ~]# su - student
[student@localhost ~]$ mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/student": 1 message 1 new
>N 1 root Sun Jun 4 11:52 21/862 "email"
&
<5> 到/etc/mail.rc文件末尾进行添加内容
vim /etc/mail.rc(G:到文件尾部)
# 开启ssl
set ssl-verify=ignore
# 下方输入证书目录,为centos系统证书默认位置,自行生成证书并指定
set nss-config-dir=/etc/pki/nssdb
# 下方填入配置的第三方smtp服务器的地址以及端口号,如果使用云服务器,安全组需要开放465端口(入口和出口)
set smtp=smtps://smtp.163.com:465
# 认证方式
set smtp-auth=login
# 下方输入用于发送邮件的邮箱账号
set smtp-auth-user=xxxx@163.com
# 下方输入上方邮箱的客户端授权码
set smtp-auth-password=XXXXXXXXXX
# 设置发信人的邮箱和昵称
set from=xxxx@163.com
<6> 发送邮件
echo "this is a first email" | mail -s "email" xxxx@163.com
命令:at [参数] [时间]
参数 | 说明 |
-m | 当任务完成之后,即使没有标准输出,将给用户发送邮件 |
-l | atq的别名,可列出目前系统上面的所有该用户的at调度 |
-d | atrm的别名,可以取消一个在at调度中的工作 |
-v(verbose) | 使用较明显的时间格式,列出at调度中的任务列表 |
-c | 可以列出后面接的该项工作的实际命令内容 |
-f | 从文件中读取作业 |
时间格式:
参数 | 说明 |
HH:MM | 在今天的HH小时MM分钟执行,如果今天的这个时间点已经过了,则明天执行 |
HH:MM YYYY-MM-DD | 强制规定在某年某月的某一天的特殊时刻进行该工作 |
now + 2 minutes | 从现在开始几分钟minutes, hours, days, or weeks |
(2)示例:
例一:设置定时任务
<1> 提前在文件中输入文字
[root@localhost ~]# echo "1234" > /root/20230605/at_task
[root@localhost ~]# more at_task
more: stat of at_task failed: No such file or directory
[root@localhost ~]# cd /root/20230605/
[root@localhost 20230605]# more at_task
1234
<2> 设置定时任务
[root@localhost ~]# at now + 2 minutes
warning: commands will be executed using /bin/sh
at> echo "5678" > /root/20230605/at_task
at> <EOT>
job 2 at Mon Jun 5 09:21:00 2023
(ctrl+d -- 结束输入)
<3> 查看文件
[root@localhost ~]# cd /root/20230605/
[root@localhost 20230605]# more at_task
5678
例二:命令使用
-l
[root@localhost ~]# at now + 2 minutes
warning: commands will be executed using /bin/sh
at> wall hello
at> <EOT>
job 3 at Mon Jun 5 09:27:00 2023
[root@localhost ~]# at -l
4 Mon Jun 5 09:27:00 2023 a root
[root@localhost ~]# atq
4 Mon Jun 5 09:27:00 2023 a root
-d
[root@localhost ~]# at -l
4 Mon Jun 5 09:32:00 2023 a root
[root@localhost ~]# at -d 4
[root@localhost ~]# at -l
循环执行的例行性工作
(1)命令:crontab -> crond
循环执行的例行性工作调度是由crond这个系统服务来控制的。同样,我们也可以限制使用crontab的用户账号。
<1> 使用流程
使用 crontab 命令来生成所要运行的工作,每一项工作都会被记录到/var/log/cron这个日志文件中,该工作便能等待 crontab 这个服务的取用与执行了。
<2> 文件使用权限
- /etc/cron.allow 将可以使用 crontab 的账号写入其中,若不在该文件内的用户 则不可使用 crontab
- /etc/cron.deny 将不可以使用 crontab 的账号写入其中,若不在该文件内的用 户则可使用 crontab。
- 当用户使用 crontab 新建工作调度之后,该项工作就会被记录到/var/spool/cron/里面
<3> 命令格式:
命令:crontab [-u user] [-l | -r | -e]
参数 | 说明 |
-u | 只有 root 才能进行这个任务,帮某个用户新建/删除 crontab |
-e | 编辑 crontab 的工作内容 |
-l | 查阅 crontab 的工作内容 |
-r | 删除所有的 crontab 的工作内容 |
编辑crontab:
[root@localhost ~]# crontab -e (相当于使用vim打开了一个文件)
写入6个字段:
(前5个字段:代表周期 --- 使用空格进行分割)
第1个字段:分钟:0-59
第2个字段:小时:0-23
第3个字段:月中天:1-31
第4个字段:月份:1-12
第5个字段:星期:0-7. 0-7都代表星期天
第6个字段:执行一个命令(任务)
代表意义 | 分钟 | 小时 | 日期 | 月份 | 周 | 命令 |
数字范围 | 0-59 | 0-23 | 1-31 | 1-12 | 0-7<br/>0和7都代表周日 | 执行的命令 |
特殊字符:
特殊字符 | 含义 |
* | 代表任何时刻 |
, | 代表分隔时段 |
- | 代表一段时间范围 |
/数字 | 指定时间的间隔频率,例如每 3 分钟进行一次,*/3 |
(2)案例
编辑每周1-5早上八点的闹钟(root/student)
[root@localhost ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@localhost ~]# crontab -l
0 8 * * 1-5 echo "alarm clock" >> /root/cron_task
[root@localhost ~]# ls -l /var/spool/cron/ --- 查看文件内容
total 4
-rw-------. 1 root root 51 Jun 5 10:41 root
[root@localhost ~]# cat /var/spool/cron/root
0 8 * * 1-5 echo "alarm clock" >> /root/cron_task
[root@localhost ~]# crontab -u student -e
no crontab for student - using an empty one
crontab: installing new crontab
[root@localhost ~]# crontab -u student -l
0 8 * * 1-5 echo "alarm clock" >> /root/cron_task
更多推荐
所有评论(0)