rsync服务
rsync命令可以通过执行服务的方式实时增量同步文件和目录
● 先编辑配置文件/etc/rsyncd.conf 若更改配置文件路径需指定--config-file=
● 再启动服务rsync --daemon 默认监听端口873,可自定义
● 使用格式:rsync -av test1/ 192.168.192.128::module/dir/
● 使用格式:rsync -avzu /tmp/mysql.sql user@ipaddress::[模块名]/ –port=873 –password-file=/etc/rsyncd.passwd
● 编辑配置文件/etc/rsyncd.conf
port=873 监听端口默认为873,可自定义log file=/var/log/rsync.log 指定日志pid file=/var/run/rsyncd.pid 指定pidaddress=192.168.202.130 可以定义绑定的ip[test] 为模块名,自定义path=/root/rsync 指定该模块对应在哪个目录下use chroot=true
是否限定在该目录下,默认为true,当有软连接时,需要改为fasle,如果为true就限定为模块默认目录max connections=4 指定最大可以连接的客户端数read only=no
是否为只读,如果是no的话,客服端推送给服务端的时候不成功,这时候要改成yeslist=true 是否可以列出模块名 rsync --port 8730 172.16.37.139:: 如果为yes的话会列出客户端所有的模块名字。 uid=root 以哪个用户的身份来传输gid=root 以哪个组的身份来传输auth users=test 指定验证用户名,可以不设置,不设置默认不用密码,设置的话安全性更高点secrets file=/etc/rsyncd.passwd 指定密码文件,如果设定验证用户,这一项必须设置,设定密码权限为400.hosts allow=192.168.192.128 1.1.1.1 2.2.2.2 192.168.192.0/24
//设置可以允许访问的主机,可以是网段,多个Ip地址用空格隔开
●再启动服务rsync --daemon
[root@localhost ~]# rsync --daemon
●检查虚拟机上服务是否已经启动
0[root@localhost ~]# ps aux |grep rsync
root 2473 0.0 0.0 114640 536 ? Ss 21:21 0:00 rsync --daemonroot 2475 0.0 0.0 112656 988 pts/0 R+ 21:21 0:00 grep --color=auto rsyn
●检查虚拟机上服务监听的端口是否为873
- 会看到监听的端口为873
- 这里并且指定监听的IP,若是不写监听的IP,就会绑定0.0.0.0,就是所有的网段,全部的IP
[root@localhost ~]# netstat -lntp
Active Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2033/master tcp 0 0 192.168.192.128:873 0.0.0.0:* LISTEN 2473/rsync tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1149/sshd tcp6 0 0 ::1:25 :::* LISTEN 2033/master tcp6 0 0 :::22 :::* LISTEN 1149/sshd [root@localhost ~]#
●检查虚拟机上path指定的路径
● 若是指定root,权限有可能不好把握,所以放在tmp目录下
● 修改/etc/rsyncd.conf目录中的
- 将path=/root/rsync改为path=/tmp/rsync
- 并新建目录mkdir=/tmp/rsync
[root@localhost ~]# vim /etc/rsyncd.conf将path=/root/rsync改为path=/tmp/rsync[root@localhost ~]# mkdir /tmp/rsync
●在虚拟机上设置权限——>这里设置的777权限是为了方便测试
[root@localhost ~]# chmod 777 /tmp/rsync
Linux系统日志
- /var/log/messages //是linux系统一个总的日志——>除非某些服务,有定义单独的日志
- /etc/logrotate.conf 日志切割配置文件
- 参考日志文件文章
- dmesg命令
- /var/log/dmesg 日志
- last命令,调用的文件/var/log/wtmp
- lastb命令查看登录失败的用户,对应的文件时/var/log/btmp
- /var/log/secure
系统日志
- /var/log/messages //是linux系统一个总的日志——>除非某些服务,有定义单独的日志
- 系统中存有一个日志切割机制,日志的滚动,在增长到一定级别就会自动切割
[root@hf ~]# [root@hf ~]# ls /var/log/messages/var/log/messages[root@hf ~]# less !$less /var/log/messages[root@hf ~]# du -sh !$du -sh /var/log/messages388K /var/log/messages
●在查看日志的时候,会发现日志自动切割了
●linux系统中有一个logrotate服务,会自动切割日志,防止无限制的增加
[root@hf ~]# ls /var/log/messages*/var/log/messages /var/log/messages-20171120 /var/log/messages-20171203/var/log/messages-20171112 /var/log/messages-20171127[root@hf ~]#
●查看日志文件cat /etc/logrotate.conf
[root@hf ~]# cat /etc/logrotate.conf# see "man logrotate" for details //会告诉你查看logrotate的帮助文档# rotate log files weeklyweekly //每周切割一次# keep 4 weeks worth of backlogsrotate 4 //切割四个# create new (empty) log files after rotating old onescreate //创建一个新的文件# use date as a suffix of the rotated filedateext //这是它的后缀名# uncomment this if you want your log files compressed#compress //是否需要压缩,压缩成 .tar.gz # RPM packages drop log rotation information into this directoryinclude /etc/logrotate.d //这个目录下还有一些文件# no packages own wtmp and btmp -- we'll rotate them here/var/log/wtmp { //切割该文件,每个月切割一次 monthly create 0664 root utmpminsize 1M rotate 1}/var/log/btmp { //切割该文件,指定权限,属主,属组 missingok monthly create 0600 root utmp rotate 1}# system-specific logs may be also be configured here.[root@hf ~]#
- 查看 /etc/logrotate.d/syslog 文件
- 它会为cron,maillog,messages,secure,spooler这几个日志进行切割
- messages日志是由 syslogd 服务决定的,所以 kill -HUP 就会重新加载这个日志
- 还有一个脚本,shell命令行,在把日志切割后(挪走),改名字生成新的日志
- Linux系统有一个特点,一个服务写一个文件的时候,并不是按照文件名去写的,而是根据inode来写的
[root@hf ~]# ls /etc/logrotate.dppp samba syslog wpa_supplicant yum[root@hf ~]# cat /etc/logrotate.d/syslog/var/log/cron/var/log/maillog/var/log/messages/var/log/secure/var/log/spooler{ sharedscripts postrotate/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript}[root@hf ~]#
dmesg命令
- dmesg命令,会把系统硬件相关的日志列出来
- 这个日志是保存在内存中的,并不是一个文件
- 假如你的网卡有问题了,硬盘损坏了,都会记录在这个日志中
- dmesg -c //清空当前日志
- 但是一重启这个系统,又会生成这些日志
/var/log/dmesg日志文件
- /var/log/dmesg //这是一个日志文件
- 这个日志文件和 dmesg命令 没有任何关联
- 它是系统启动的一个日志,记录的信息
last命令
- last命令,查看你正确的登录历史
- 调用的文件/var/log/wtmp
- 记录是是谁,在哪里,来源IP,时间,登录的时长都会有记录
- /var/log/wtmp日志是一个二进制文件,不能直接cat查看的,只能用last命令去查看
[root@hf ~]# lastroot pts/0 192.168.74.1 Thu Dec 7 01:41 still logged in reboot system boot 3.10.0-123.el7.x Thu Dec 7 01:36 - 05:38 (04:01) root pts/1 192.168.74.1 Wed Dec 6 05:11 - 05:13 (00:01) root pts/0 192.168.74.1 Wed Dec 6 01:27 - crash (1+00:09) reboot system boot 3.10.0-123.el7.x Wed Dec 6 01:26 - 05:38 (1+04:11) root pts/0 192.168.74.1 Tue Dec 5 01:38 - crash (23:48) reboot system boot 3.10.0-123.el7.x Tue Dec 5 01:37 - 05:38 (2+04:00) root pts/0 192.168.74.1 Mon Dec 4 03:23 - down (02:57) root pts/0 192.168.74.1 Sun Dec 3 17:42 - 03:23 (09:40) 等等等,只截取了一部分[root@hf ~]# ls /var/log/wtmp/var/log/wtmp
screen工具
是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。
会话恢复
只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似。
多窗口
在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。Screen实现了基本的文本操作,如复制粘贴等;还提供了类似滚动条的功能,可以查看窗口状况的历史记录。窗口还可以被分区和命名,还可以监视后台窗口的活动。 会话共享 Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。
GNU's Screen 官方站点:http://www.gnu.org/software/screen/
语法
# screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]
选项
-A 将所有的视窗都调整为目前终端机的大小。 -d <作业名称> 将指定的screen作业离线。 -h <行数> 指定视窗的缓冲区行数。 -m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。 -r <作业名称> 恢复离线的screen作业。 -R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。 -s 指定建立新视窗时,所要执行的shell。 -S <作业名称> 指定screen作业的名称。 -v 显示版本信息。 -x 恢复之前离线的screen作业。 -ls或--list 显示目前所有的screen作业。 -wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。
常用screen参数
screen -S yourname -> 新建一个叫yourname的session screen -ls -> 列出当前所有的session screen -r yourname -> 回到yourname这个session screen -d yourname -> 远程detach某个session screen -d -r yourname -> 结束当前session并回到yourname这个session
在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。
C-a ? -> 显示所有键绑定信息
C-a c -> 创建一个新的运行shell的窗口并切换到该窗口
C-a n -> Next,切换到下一个 window
C-a p -> Previous,切换到前一个 window
C-a 0..9 -> 切换到第 0..9 个 window
Ctrl+a [Space] -> 由视窗0循序切换到视窗9
C-a C-a -> 在两个最近使用的 window 间切换
C-a x -> 锁住当前的 window,需用用户密码解锁
C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。
C-a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。
C-a w -> 显示所有窗口列表
C-a t -> time,显示当前时间,和系统的 load
C-a k -> kill window,强行关闭当前的 window
C-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样
C-b Backward,PageUp
C-f Forward,PageDown
H(大写) High,将光标移至左上角
L Low,将光标移至左下角
0 移到行首
$ 行末
w forward one word,以字为单位往前移
b backward one word,以字为单位往后移
Space 第一次按为标记区起点,第二次按为终点
Esc 结束 copy mode
C-a ] -> paste,把刚刚在 copy mode 选定的内容贴上