Linux基础(七)

时间:2023-03-08 17:19:34
Linux基础(七)

一、nfs服务

nfs(Network File System)即网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。常用于Linux系统之间的文件共享。

nfs在文件传送过程中依赖rpc(远程过程调用)协议,可以这么理解,nfs是文件系统,而rpc负责信息传输。

配置服务需要五步:

1.关闭防火墙

systemctl stop firewalld

关闭selinux,setenforce 0

2.配置IP

检查自己的IP地址能否正常使用

3.安装软件包

yum install -y rpcbind nfs-utils

4.修改配置文件

配置文件在/etc/exports

文件格式为:

  <输出目录> [客户端1 选项(访问权限,用户权限,其他*限)] [客户端2 选项(访问权限,用户映射,其他)]

5.测试

1)新建一块硬盘,格式化并挂载到/share下,

2)写入配置文件

/share 192.168.16.0/24(rw,sync)

客户端常用的指定方式

  • 指定ip地址的主机:192.168.0.200
  • 指定子网中的所有主机:192.168.0.0/24 192.168.0.0/255.255.255.0
  • 指定域名的主机:david.bsmart.cn
  • 指定域中的所有主机:*.bsmart.cn
  • 所有主机:*

用户映射选项

  • all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
  • no_all_squash:与all_squash取反(默认设置);
  • root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
  • no_root_squash:与rootsquash取反;
  • anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
  • anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);

其它选项

  • secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
  • insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
  • sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
  • async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
  • wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
  • no_wdelay:若有写操作则立即执行,应与sync配合使用;
  • subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
  • no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

3)命令exportfs可以显示共享给哪些用户

4)开启另一台设备,设置网络,安装nfs服务(不需要改配置,也不用开启nfs)

5)挂载 mount 192.168.16.25:/share /opt

showmount -e 查看nfs服务器是否有共享目录

二、crond 计划任务

提前设定好计划任务后,到了预定时间就会自动运行命令,这就叫计划任务。crond是很重要的服务,即使Centos是最小化安装,也会默认装上这个服务,而且默认开机启动

计划任务分为系统级别和用户级别,系统的计划文件存放在/etc/crontab路径下,用户的计划文件存放在/var/spool/cron路径下,两种级别都可以满足我们定制计划的需求。root用户可以直接修改配置文件,也可以通过crontab -e命令来编写计划任务,而普通用户只能通过后者。我们来看一下全局配置文件

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root # For details see man 4 crontabs # Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

*代表“每”,从左到右依次是分钟,小时,日,月,周,用户名,要执行的命令

可以直接在这个配置文件中修改,写入计划任务,也可以用crontab -e -u root 来写计划任务,但是要注意用户级的修改不能写用户名,如* * * * * date >> /tmp/time.log

用crontab -l 查看计划任务是什么

用tail -f /var/log/cron查看计划任务的执行

示例:

30 12 * * * /usr/bin/tar cvf /etc_bak/$(date'+\%Y-\%m-\%d_\%T').tar.gz /etc

每天12:30备份/etc目录,保存到/etc_bak中,并以时间命名

注意:1.命令必须使用绝对路径,否则可能出错

   2.注意系统时间是否正确,可以用hwclock -w 同步硬件时间和系统时间

   3.保证我们写的脚本有执行权限

   4.crond在执行命令时,有些通配符无法识别,所以最好都加上\