crond服务初相识

1、crond是Linux中一个可以定时进行任务调度的后台程序。

2、任务调度是指系统在某个时间执行的特定的命令或程序。

3、任务调度分类 系统工作--有些重要的工作必须周而复始地执行。如病毒扫面等。 个别用户工作--个别用户可能希望执行某些程序。编写脚本shell来使crond进行定时调用,比如mysql数据库的备份;使crond定时调用简单任务,比如一条指令。

systemctl status crond.service

crond服务配置文件详解

 crond 服务的配置文件是 `/etc/crontab`,该文件定义了系统中的定时任务调度规则。下面是 `crontab` 文件的详细说明:

1. 文件格式:`/etc/crontab` 是一个文本文件,每一行代表一个定时任务规则。每行的格式如下:
   ```
   分钟 小时 日 月 周 用户 命令
   ```

   - 分钟(0-59):指定任务执行的分钟。
   - 小时(0-23):指定任务执行的小时。
   - 日(1-31):指定任务执行的日期。
   - 月(1-12):指定任务执行的月份。
   - 周(0-7,其中 0 和 7 都表示周日):指定任务执行的星期几。
   - 用户:指定任务将以哪个用户的身份运行。一般是 root 用户或其他用户。
   - 命令:指定要执行的命令或程序。

2. 特殊字符:
   - `*`:表示匹配任意值,比如 `* * * * *` 表示每分钟都执行。
   - `,`:用于指定多个值,比如 `0,15,30,45 * * * *` 表示每小时的 0 分、15 分、30 分和 45 分执行。
   - `/`:用于指定时间间隔,比如 `*/5 * * * *` 表示每隔 5 分钟执行一次。
   - `-`:用于指定范围,比如 `1-5 * * * *` 表示分钟为 1 到 5 都执行。
   - `#`:表示注释,以 `#` 开头的行将被忽略。

3. 额外的配置文件目录:除了 `/etc/crontab`,crond 还可以读取以下目录中的文件进行定时任务调度:
   - `/etc/cron.d/`:该目录下的文件遵循与 `/etc/crontab` 相同的格式。
   - `/etc/cron.daily/`:该目录下的文件用来指定每天执行的任务。
   - `/etc/cron.weekly/`:该目录下的文件用来指定每周执行的任务。
   - `/etc/cron.monthly/`:该目录下的文件用来指定每月执行的任务。

注意:修改了 `/etc/crontab` 文件后,需要重启 `crond` 服务或者重新加载配置文件才能生效,可以使用 `service cron restart` 命令来重启服务。

希望以上信息能够详细解释 crond 服务配置文件的内容和用法。

minute:表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

 

crond服务使用 

`crontab` 命令用于管理用户的定时任务(cron job)。下面是 `crontab` 命令的使用详解:

1. 查看当前用户的定时任务:`crontab -l`
   这个命令会列出当前用户所有的定时任务。

2. 编辑定时任务:`crontab -e`
   这个命令会打开一个文本编辑器,用于编辑当前用户的定时任务。如果是第一次编辑,会让你选择编辑器。

3. 添加定时任务:`crontab -e` 编辑定时任务后,添加一行新的定时任务即可。

4. 删除定时任务:`crontab -r`
   这个命令会删除当前用户的所有定时任务。

5. 使用其他定时任务文件:`crontab -u 用户名 文件名`
   这个命令会将指定文件中的定时任务导入到指定用户的定时任务中。

6. 注意事项:
   - 定时任务的格式和含义与 `/etc/crontab` 文件中的一致,即 `分钟 小时 日 月 周 用户命令`。
   - 定时任务中的命令可以是任意可执行的命令、脚本或程序。
   - 定时任务文件中可以使用 `@reboot` 来指定在系统启动时执行的任务。
   - 使用 `crontab -e` 修改定时任务后,会覆盖之前的所有定时任务,因此要小心操作。

crond服务命令举例

下面是一些示例命令,用于管理和操作 crond 服务:

1. 启动 crond 服务:`service cron start` 或 `systemctl start cron`
   这些命令用于启动 crond 服务,使其开始执行定时任务。

2. 停止 crond 服务:`service cron stop` 或 `systemctl stop cron`
   这些命令用于停止 crond 服务,停止执行定时任务。

3. 重启 crond 服务:`service cron restart` 或 `systemctl restart cron`
   这些命令用于重启 crond 服务,即停止当前运行的服务并重新启动。

4. 查看 crond 服务状态:`service cron status` 或 `systemctl status cron`
   这些命令用于查看 crond 服务的运行状态,包括是否正在运行以及运行的进程 ID 等信息。

5. 查看 crond 服务日志:`tail -f /var/log/cron`
   这个命令用于实时查看 crond 服务的日志文件,可以用于排查定时任务执行的问题。

请注意,在使用这些命令时可能需要管理员权限(使用 `sudo`)。

以上是一些常用的 crond 服务命令示例,可以帮助您管理和操作定时任务的执行。

每两个小时重启一次apache      

0 */2 * * * /sbin/service httpd restart  

每天7:50开启ssh服务      

50 7 * * * /sbin/service sshd start

每天22:50关闭ssh服务      

50 22 * * * /sbin/service sshd stop

每月1号和15号检查/home 磁盘      

0 0 1-15 * * fsck /home        

0 0 1,15 * * fsck /home  

每小时的第一分执行 /home/bruce/backup这个文件      

1 * * * * /home/bruce/backup  

每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。     00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \;  

意思是每月的1、11、21、31日是的6:30执行一次ls命令      

30 6 */10 * * ls  

 NFS服务初相识

NFS(Network File System)即网络文件系统。 它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。 最早由sun公司开发,是类unix系统间实现磁盘共享的一种方法。 

缺点: 客户端的数据都是通过明文传送。客户端没有用户认证机制,安全性能一般,所以建议一般在局域网内使用。 容易发生单点故障,即server服务器宕机所有的客户端都不能访问(产生的后果:在linux中执行df -h命令会直接hung住)

使用场景: web集群中NFS服务器主要用于存储用户上传的信息,方便集群中机器获取用户数据。如图片 附件 头像 视频 音频,就比如oracle数据泵需要有一个本地存放备份文件的空间,这种情况下就需要个较大的存储空间,这时候就会用到nfs

 

 NFS服务 - exports 相关参数

 

 

1.2 RPC 远程调度

RPC全称是 Remote Procedure Call ,翻译过来就是——远程过程调用/调度

RPC 服务会指定一个端口(111)来对外提供服务,这个服务主要功能就是去记录 NFS server 上每个 NFS 功能所对应的端口,并且通知给 client,让 client 可以连接到正确的端口上去

那么RPC又是如何知道每个 NFS 功能的端口呢?

当 NFS server 服务启动时,会启用一些功能,然后这些功能会去随机调用一些端口

这时候 NFS server 就会向 RPC 去注册这些端口,RPC 将注册端口记录下来

并且 RPC 开启 111 去监听 client 的请求,如果 client 有请求,那么 RPC 就会将记录的 NFS 端口信息通知给 client

client 获取到 NFS server 的端口信息后就能够与 NFS server 进行通信了

PS:

  1. 在启动 NFS server 之前首先要启动 RPC 服务(portmap 服务)否则 NFS server 就无法向 RPC 服务去注册
  2. 如果 RPC 服务重启,原来已经注册好的 NFS 端口数据会全部丢失,因此 NFS 服务也要重启以便重新向 RPC 注册
  3. 一般修改 NFS 配置文档后,是不需要重启 NFS 的,直接执行 exportfs -r -v 即可

NFS 启动的 RPC daemon

我们知道 NFS server 在启动的时候需要向 RPC 注册,所以在 NFS server 上需要部署 RPC 服务

NFS 服务器也被称为 RPC server 之一

那么在 NFS server 上需要启动 RPC 的 daemons,至少需要两个,一个是管理 client 是否能够登入;另一个是管理 client 登入后的权限

  • rpc.nfsd

NFS server 的服务提供者,主要功能是管理 client 是否能够登陆到 NFS server

  • rpc.mountd

负责管理 NFS 文件系统,当 client 通过 rpc.nfsd 登录到 NFS server 后,需要通过这个 daemon 来决定 client 能否去访问共享目录

该进程会去读取 NFS 的配置文件( /etc/exports )来对比客户端的权限

  • rpc.lockd (非必要)

负责给共享目录加锁,当多个 client 同时尝试写入某个共享文件时,就会出现问题

rpc.lockd 可以解决这个问题,但 rpc.lockd 必须要同时在 client 与 server 都开启才行。此外, rpc.lockd 也常与 rpc.statd 同时启用

  • rpc.statd (非必要)

负责检查共享文件的一致性,与 rpc.lockd 有关

若发生因为 client 同时操作同一文件造成文件可能有所损毁时, rpc.statd 可以用来检测并尝试恢复该文件。

与 rpc.lockd 同样的,这个功能必须要在 server 与 client 都启动才会生效

1.3 NFS 工作过程

  • 首先 server 启动 RPC 服务,并开启 111 端口
  • 接着 server 启动 NFS 服务,并向 RPC 注册端口信息
  • client 启动 RPC(portmap服务),向 server 的 RPC (portmap) 服务发送请求,请求 server 的 NFS 端口
  • server 的 RPC(portmap) 服务返回 NFS 端口信息给 client
  • client 通过获取的 NFS 端口来建立和 server 的 NFS 连接并进行数据的传输

1.4 NFS 权限

我们首先要知道, Linux 系统会主动以自己的 /etc/passwd, /etc/group 目录来查询对应的账号名、组名

也就是说系统是不认你的用户名,它只认用户名所对应的 UID 和 GID

有没有想过这个问题:假如 client 以 user1 这个身份去对 NFS server 提供的共享目录进行操作时,共享目录会让 client 以什么身份去操作,user1 还是其他?

这是因为 NFS 并不提供身份识别功能,所以说当 client 以 user1 的身份来对共享目录进行操作时,server 会以 client 当前用户(即 user1)的 UID 和 GID 所对应的 server 端用户来操作共享目录(这段有点难理解,多看几遍)

这时候就会有一个问题产生:如果相同 UID 和GID 下 client 与 server 用户身份不一致怎么办,由于共享目录是在 server 端,client 去操作共享目录的话必须按照 server 端的用户权限

举个例子,client 以 user1 (UID 为666)这个身份去操作来自 server 的共享目录时,就会出现以下几种情况:

1、server 和 client 刚好有相同的账号与群组(即 server 端 UID 为 666 的用户对应 user1)

答:此时 client 可以直接以 user1 的身份对共享目录进行操作

2、server 的 666 这个 UID 对应的用户为 test

答:意味着 client 的 user1 用户可以对 server 端 test 用户的共享目录进行操作;因为这两个用户具有相同的 UID

这会造成严重的安全问题,会导致共享目录的数据被错误的用户乱改

3、server 没有 666 这个 UID

答:在 server 端并没有666这个 UID,那么 user1 在该共享目录下会被压缩成匿名用户(也会有特殊的情况,例如共享目录是 /tmp 的情况下, user1 的身份被压缩成 nobody 用户)

一般 NFS 的匿名用户 UID 为 65534

4、root用户

如果 client 操作共享目录的用户 UID 在 server 端对应为 root 用户,那就毫无数据安全可言

所以可以通过设置将 root 用户压缩成匿名用户

总的来讲,client 的权限是与 UID 和 GID 相关的,当 client 与 server 的 UID 对应的用户不一致时,就有可能造成一些问题

NFS配置权限设置,即 /etc/exports 文件配置格式中小括号()里的参数集

1.5 NFS 相关文件

  • 主要配置文件:/etc/exports

NFS 的配置文件

  • NFS 文件系统维护指令:/usr/sbin/exportfs

维护 NFS 共享资源的命令,可以对共享资源进行更新、删除等

  • 共享资源的登录文件:/var/lib/nfs/*tab

在 NFS server的登录文件都放置到 /var/lib/nfs/ 目录里面,在该目录下有两个比较重要的登录文件

一个是 etab ,主要记录了 NFS 所共享出来的目录的完整权限设定值;

另一个 xtab 则记录曾经连接到此 NFS 服务器的相关客户端数据

  • 客户端查询服务器分享资源的指令:/usr/sbin/showmount

showmount 则主要用在 Client 端, 可以用来查看 NFS server 共享出来的目录资源

NFS 案例

学习 NFS 的重点不在部署,在于要搞懂相关原理

下面我将搭一个简单的架构来实现 NFS 的部署

有两台 web 服务器通过 NFS 将后端存储服务器的数据挂载到本地
用户去访问 web 服务器上的资源,其实访问的是后端存储服务器的资源

架构图如下:

- web1:192.168.149.130
- web2:192.168.149.131
- NFS server:192.168.149.129

2.1 NFS server

安装 NFS、RPC 服务

[root@server ~]# yum install -y nfs-utils rpcbind

创建共享目录作为客户端挂载的远端入口

[root@server ~]# mkdir /data/{web1,web2} -pv 

修改 NFS 配置文件

[root@server ~]# vim /etc/exports
/data/web1  192.168.149.130(rw,sync,insecure,no_subtree_check,no_root_squash)
/data/web2  192.168.149.131(rw,sync,insecure,no_subtree_check,no_root_squash)

一般修改 NFS 配置文档后,是不需要重启 NFS 的,直接执行 exportfs -r -v 即可

启动 rpc 服务

[root@server ~]# systemctl start rpcbind.service

注意:此时我们还没有启动 NFS 服务,只监听了 111 端口,接着我们来启动 NFS 服务

[root@server ~]# systemctl start nfs.service

启动了 NFS 服务后,rpc 注册的端口列表明显增多。现在服务端都启动起来了,在服务端看下是否正确加载了设置的 /etc/exports 配置

[root@server ~]# showmount -e localhost
Export list for localhost:
/data/web2 192.168.149.131
/data/web1 192.168.149.130

接着我们在共享目录下存放web资源

[root@server ~]# cat /data/web1/test.html 
<h1> I am NFS server</h1>
<h2> This is web1 </h2>
[root@server ~]# cat /data/web2/test.html 
<h1> I am NFS server</h1>
<h2> This is web2 </h2>

2.2 NFS client

安装nginx提供web服务

yum install epel-release -y
yum install -y nginx

安装 nfs 服务

yum install -y nfs-utils

nginx配置

#web1
vim /etc/nginx/conf.d/web.conf
server{
        listen 8080;
        root         /mnt/html/;
        index test.html;
}
​
#web2
vim /etc/nginx/conf.d/web.conf
server{
        listen 8080;
        root         /mnt/html/;
        index test.html;
}

web1、web2 分别创建挂载目录

mkdir /mnt/html/

我们可以在客户端查看下 NFS server ( IP 为:192.168.149.129 ) 设置可共享的目录信息

[root@web1 ~]# showmount -e 192.168.149.129
Export list for 192.168.149.129:
/data/web2 192.168.149.131
/data/web1 192.168.149.130
[root@web2 ~]# showmount -e 192.168.149.129
Export list for 192.168.149.129:
/data/web2 192.168.149.131
/data/web1 192.168.149.130

web1挂载 NFS server 的 /data/web1 共享目录

[root@web1 ~]# mount -t nfs 192.168.149.129:/data/web1 /mnt/html
​
[root@web1 ~]# df -Th
文件系统                   类型      容量  已用  可用 已用% 挂载点
192.168.149.129:/data/web1 nfs4       17G  2.1G   15G   12% /mnt/html

web2挂载 NFS server 的 /data/web2 共享目录

[root@web2 ~]# mount -t nfs 192.168.149.129:/data/web2 /mnt/html
​
[root@web2 ~]# df -Th
文件系统                   类型      容量  已用  可用 已用% 挂载点
192.168.149.129:/data/web2 nfs4       17G  2.1G   15G   12% /mnt/html

2.3 验证

我们分别访问web1、web2,看下是否能够正确读取并修改

[root@server ~]# curl 192.168.149.131:8080
<h1> I am NFS server</h1>
<h2> This is web2 </h2>
​
​
[root@server ~]# curl 192.168.149.130:8080
<h1> I am NFS server</h1>
<h2> This is web1 </h2>

[root@web1 ~]# echo "hello" >> /mnt/html/test.html
​
#在 NFS server 上查看,可以看到成功修改了
[root@server ~]# cat /data/web1/test.html 
<h1> I am NFS server</h1>
<h2> This is web1 </h2>
hello

最后,如果客户端要卸载 NFS 挂载(挂载目录为 /mnt/html)的话,使用如下命令即可

umount /mnt/html

 Linux 静态路由相关命令

在Linux中,可以使用以下命令配置和管理静态路由:

1. route命令:用于显示、添加或删除IP路由表条目。例如:

   - 显示当前路由表:`route -n`
   - 添加静态路由:`route add -net destination_network netmask netmask_value gw gateway_ip`
   - 删除静态路由:`route del -net destination_network netmask netmask_value gw gateway_ip`

 

 注意:以上命令需要root权限执行。

2. ip命令:用于管理网络接口和路由表。ip命令是继承自iproute2包的工具,更加强大和灵活。例如:

   - 显示当前路由表:`ip route show`
   - 添加静态路由:`ip route add destination_network/netmask_value via gateway_ip`
   - 删除静态路由:`ip route del destination_network/netmask_value via gateway_ip`

   注意:以上命令需要root权限执行。

在配置静态路由时,需要提供目标网络(destination_network)、子网掩码(netmask_value)和下一跳网关(gateway_ip)的相关信息。

请注意,以上命令仅在当前系统运行时临时添加路由表项,重启后将会失效。如果想要在系统重启后持久化配置静态路由,需要将相关命令添加到网络配置文件中,如`/etc/network/interfaces`(Debian/Ubuntu)或`/etc/sysconfig/network-scripts/route-<interface>`(CentOS/RHEL)中。

Linux 临时IP地址添加与删除

在Linux中,可以使用ip命令来临时添加和删除IP地址。请注意,这些更改在系统重启后将失效,如果需要持久化修改,需要编辑网络配置文件。

临时添加IP地址的命令如下:

```shell
sudo ip addr add <ip_address>/<netmask_bits> dev <interface>
```

其中, `<ip_address>` 是要添加的IP地址,`<netmask_bits>` 是子网掩码位数,`<interface>` 是要添加IP地址的网络接口名。例如,要在eth0网络接口上添加IP地址为192.168.1.100/24:

```shell
sudo ip addr add 192.168.1.100/24 dev eth0
```
临时删除IP地址的命令如下:

```shell
sudo ip addr del <ip_address>/<netmask_bits> dev <interface>
```

其中, `<ip_address>` 是要删除的IP地址,`<netmask_bits>` 是子网掩码位数,`<interface>` 是要删除IP地址的网络接口名。例如,要在eth0网络接口上删除IP地址为192.168.1.100/24:

```shell
sudo ip addr del 192.168.1.100/24 dev eth0
```

请注意,以上命令需要使用sudo或root权限来执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值