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在执行命令时,有些通配符无法识别,所以最好都加上\