7月19日任务
10.32/10.33 rsync通过服务同步
10.34 linux系统日志10.35 screen工具扩展1. Linux日志文件总管logrotate http://linux.cn/article-4126-1.html2. xargs用法详解不是通过ssh 而是通过服务的方式同步 这样就需要开启一个服务,cs架构,客户端,服务端。 服务端开启一个服务,监听一个端口默认873,而且可以自定义。客户端在服务器端开启以后就可以通过873端口传送服务以及数据。
启动服务之前要编辑配置文件,默认的地址是在 /etc/rsyncd.conf .如果写到别的地方,开启服务的时候要写上新路径
启动服务 rsybc --daemon
命令格式:
rsync -av 当前需要同步的文件 ip::模块名路径/文件名 模块名就是配置文件里的[]中间的那个test
rsync -avp /tmp/1.passwd 192.168.202.123::test/from02.passwd
解释一下上述的设置。
port是端口
log 日志文件
pid
address 是服务端的地址
[test]是模块名,随便起,在客户端的时候可以用来写在命令中
以下是一个案例:
aming1的ip 192.168.202.123 这个机器设置为服务器端 设置了873端口 以及log 配置 路径等。
aming2的IP192.18.202.250 这个机器设置为客户端 然后需要从客户端将一个文件同步到服务器端。
首先在服务器端配置好配置文件,/etc/rsyncd.conf
启动服务 rsync --daemon
检查以下这个服务是否启动 ps aux | grep rsync 查看进程 netstat -lntp 检查端口 873
4. 然后按照配置文件中的路径,给接受路径777权限
5. 在aming2机器上执行同步命令
rsync -avp /tmp/1.passwd 192.168.202.123::test/from02.passwd
passwd 是要传输的文件 双冒号后面是模块名 后面跟新文件的名字
6. 出现了error
7. 检查错误。ping可以通,网络连接没有问题。然后检查端口,使用命令telnet ip 端口,ok是端口的问题。iptables的问题,所以要停掉firewalld服务。systemctl stop firewalld 关闭规则,两边都要。
8 重新执行传输命令,会要求输入密码,密码在配置文件中有定义,auth secrets 路径, 可以暂时先关闭。
9 执行,成功。
来说说配置文件中的含义:
port=873-----------默认端口,不写的话就是873
log file=/var/log/rsync.log--------自定义日志文件
pid file=/var/run/rsyncd.pid------- 指定pid文件,这个文件的作用涉及服务的启动,停止等进程管理操作。
address=192.168.133.130 ----------指定启动rsync服务的IP,多个ip可以指定其中一个,不指定就会在全部ip
[test] -----模块名
path=/root/rsync 指定数据存放路径
use chroot=true 表示在传输文件前首先chroot到path参数指定的目录下,这样做可以实现额外的安全防护,确定是需要root权限,并且不能备份只想外部的符号连接所指向的目录文件。默认为true,如果数据当中有软链接文件,建议改成false(翻译一下就是如果有软链接而且传输的时候把实体也传输,且实体不存在了就会报错)
max connections=4 指定最大连接数,默认为0,即没有限制
read only=no true/false 如果只读定义为true 那就是写不进去了 客户端就传不了了
list=true --------作用是如果是ture 就可以列出远程服务器所有的模块。是一个安全选项,如果模块名可见,就比较危险,有安全隐患。
uid=root 指定传输的时候以哪个用户传输。
gid=root
auth users=test 指定传输时用使用到用户名
secrets file=/etc/rsyncd.passwd 指定密码文件,该参数联通上面的参数如果不指定,则不用密码验证
这个文件的格式是 用户:密码 权限是600.客户端的目录是/etc/rsync_pass.txt 只写密码,权限也是600。同步的时候需要更多的一个选项,--password-file=/etc/rsync_pass.txt
hosts allow=192.168.133.132 1.1.1.1 2.2.2.2 192.168.133.0/24 用来定义哪些机器来做同步,1.1.1.1 2.2.2.2 表示多个ip 后面是ip段
如果服务器端端口改变了,客户端需要在命令行加上一个选项 --port 端口号来保证传输正常。
Linux 系统日志
随着越来越多的涉及服务的启动,运行,log就越来越重要。很多的错误都会记录在日志中。
重要的日志:
/var/log/messages Linux的主要log都在这里
所有的日志都记录在此,所以长久以往会很大。所以系统有一个日志切割机制。增长到一定级别的时候就切割了。看下图
因为linux有一个服务 logrotate 日志切割
参考
dmesg命令
显示硬件相关的日志,保存在内存中。关机即无。
/var/log/dmesg 记录的是启动相关的信息
last命令记录的是正确登陆的日志,调用的是 /var/log/wtmp文件,二进制文件不能用cat
lastb命令记录的是登陆失败的日志,调用的是 var/log/btmp 二进制文件,如果有人尝试暴力破解等,就会留下记录。
安全日志 /var/log/secure
screen工具 虚拟屏幕,虚拟终端。
有时候运行脚本时间很长,而且不能中途中断。所以为了不让一个任务意外中断,需要保证网络不能出任何的差错。
有两个办法解决:
1, 放到后台,有输出到日志中。
nohup 执行命令 日志 &
这样就算终端断开也会在后台运行
2,screen放到后台,随时用,随时调出来。
screen命令 直接进入一个虚拟终端,执行一个不能停止的命令后 按ctrl a 然后按d 退出虚拟终端。任务继续进行
比如 在screen下执行 vmstat 1 命令
告诉你有一个screen id是4047
可以使用screen -ls 列出来
回到screen screen -r id
杀掉screen 用exit
也可以同时用好几个screen
但是时间久了不会记得screen下面运行的是什么命令了,如何区分?
有一个参数可以起名,-S
screen -S “名字“ 进入的时候也可以用名字进入,同时也可以用id进来