一、监控系统状态
1.w 查看系统当前负载
[root@localhost sbin]# w 15:23:46 up 3:34, 2 users, load average: 0.03, 0.05, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 - 12:26 2:55m 0.11s 0.11s -bash root pts/0 10.72.137.53 12:28 1:17m 1:32 1:32 -bash
查看登录用户的信息,以及通过什么方式登录
关注数据:load average(单位时间段内cpu活动进程数)
1分钟内平均负载;5分钟内平均负载;15分钟内平均负载
值越大服务器压力愈大,值 <= cpu数量即可
1.1 查看cpu数量
cat /proc/cpuinfo
processor id表示了cpu的数量
仅查看系统上的整体负载,通过查看load average判断系统是否有压力。但不能判断具体哪里在承压(cpu,内存,磁盘)
2.vmstat 监控系统状态
能够查看到系统每个设备运行状况(进程procs,内存memory,swap内存交换,io磁盘读写,system系统中断次数,cpu是cpu使用状态)
重点关注r、b、wa列 r运行等待cpu时间片的进程数,大于cpu个数,则cpu不够用 b等待资源的进程数,比如等待I/O,内存等,长时间大于1,则需关注 wa I/O等待所占用cpu时间百分比 次关注si、so、bi、bo si 交换区写入到内存数据量 so 内存写入到交换区数量 si、so值高时,内存不够用,数据频繁出入交换区,对系统性能影响极大 bi 磁盘写入到内存数据量 bo 内存写入到磁盘的数据量 vmstat 1 5 每秒收集一次,共收集5次 3. 可以监控系统所有资源状态,比如负载均衡、网卡流量、磁盘状态,内存使用
可以查看历史监控信息,保存数据库文件 /var/log/sa/,默认保存一个月 安装sar工具:yum -y install sysstat sar -n DEV查看网卡流量状态 txpck/s每秒发出去数据包数量,rxpck/s每秒收到数据包数量; txkB/s每秒发出去数据量,rxkB/s每秒收到数据量 sar -n DEV 1 5 每秒监控一次网卡流量,共5次 sar -n DEV -f /var/log/sa/sa24查看历史某一天的网卡流量 sar -q 查看历史负载,可以查看过去某个时间点的负载情况 sar 查看历史状态信息,负载,流量,磁盘I/O,内存。。 4. 重点关注项:%CPU, %MEM, COMMAND shift+m按照内存大小对进程列表进行排序 top -bnl 一次性把当前系统信息显示,而非动态显示 动态监控进程占用的系统资源,每隔3秒变一次 loadaverage、进程数Tasks、cpu使用情况、内存和交换分区使用情况。
5. free查看内存使用状况
[root@localhost ~]# free total used free shared buffers cached Mem: 326616 137332 189284 0 34480 73336 -/+ buffers/cache: 29516 297100 Swap: 2097144 1144 2096000
29516才是真正使用的内存,297100才是真正剩余的内存
因为系统初始化时,分配一部分内存给换成buffer,提供给程序使用,没用时则也属于空闲内存
free -h 人能看懂,M为单位;free -m以M为单位,但不显示M;free -g以G为单位
6. ps 查看系统进程
相比较top显示的结果,更容易看懂
[root@localhost ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.2 2900 852 ? Ss 11:49 0:01 /sbin/init root 2 0.0 0.0 0 0 ? S 11:49 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 11:49 0:00 [migration/0] root 4 0.0 0.0 0 0 ? S 11:49 0:11 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S 11:49 0:00 [migration/0] root 6 0.0 0.0 0 0 ? S 11:49 0:00 [watchdog/0] root 7 0.0 0.0 0 0 ? S 11:49 0:04 [events/0] root 8 0.0 0.0 0 0 ? S 11:49 0:00 [cgroup] root 9 0.0 0.0 0 0 ? S 11:49 0:00 [khelper]
STAT:表示进程状态
D 不能中断的进程(通常I/O);
R 正在运行的进程;
S 已经中断的进程,通常系统大部分进程的状态;
s 主进程
T 已经停止或暂停的进程,例如运行进程sleep 10 然后ctrl+z暂停后,状态即为T;
W 内核2.6以后,表示没有足够内存页分配;
X 已经死掉的进程(好像重来没有出现);
Z 僵尸进程,杀不掉打不死的垃圾进程,占用一小部分资源,没太大关系,但是太多就有问题,一般不会出现;
< 高优先级进程
N 低优先级进程
L 在内存中被锁定了内存分页的进程
l 多线程进程
+ 代表在前台运行的进程
通常ps会连同 | 一起使用 ps aux |grep -c mingetty (-c 统计)。常用命令
7.netstat 查看网络状况
查看看网络连接状况,系统开放端口,路由表等信息
最常用两个命令:netstat -lnp(打印系统启用哪些端口)、netstat -an(打印网络连接状况)
[root@localhost ~]# netstat -lnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 929/sshd tcp 0 0 :::80 :::* LISTEN 25005/httpd tcp 0 0 :::22 :::* LISTEN 929/sshd udp 0 0 0.0.0.0:68 0.0.0.0:* 1597/dhclient Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node PID/Program name Path unix 2 [ ACC ] STREAM LISTENING 6783 1/init @/com/ubuntu/upstart
[root@localhost ~]# netstat -an Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 10.72.137.159:22 10.72.137.53:50507 ESTABLISHED tcp 0 52 10.72.137.159:22 10.72.137.53:50827 ESTABLISHED tcp 0 0 :::80 :::* LISTEN tcp 0 0 :::22 :::* LISTEN udp 0 0 0.0.0.0:68 0.0.0.0:* Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 6783 @/com/ubuntu/upstart unix 2 [ ] DGRAM 6953 @/org/kernel/udev/udevd unix 3 [ ] DGRAM 6973 unix 3 [ ] DGRAM 6972
8.tcpdump 抓包工具
安装tcpdump:yum -y install tcpdump
[root@localhost ~]# tcpdump -nn -i eth0 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 19:13:56.689147 IP 10.72.137.159.22 > 10.72.137.53.50827: Flags [P.], seq 2793829986:2793830182, ack 1384443306, win 1067, length 196 19:13:56.691389 IP 10.72.137.159.22 > 10.72.137.53.50827: Flags [P.], seq 196:376, ack 1, win 1067, length 180 19:13:56.691541 IP 10.72.137.53.50827 > 10.72.137.159.22: Flags [.], ack 376, win 16266, length 0 19:13:56.694499 IP 10.72.137.159.22 > 10.72.137.53.50827: Flags [P.], seq 376:636, ack 1, win 1067, length 260 19:13:56.695659 IP 10.72.137.159.22 > 10.72.137.53.50827: Flags [P.], seq 636:800, ack 1, win 1067, length 164 19:13:56.695793 IP 10.72.137.53.50827 > 10.72.137.159.22: Flags [.], ack 800, win 16160, length 0 19:13:56.698429 IP 10.72.137.159.22 > 10.72.137.53.50827: Flags [P.], seq 800:1060, ack 1, win 1067, length 260 19:13:56.700332 IP 10.72.137.159.22 > 10.72.137.53.50827: Flags [P.], seq 1060:1224, ack 1, win 1067, length 164 19:13:56.700419 IP 10.72.137.53.50827 > 10.72.137.159.22: Flags [.], ack 1224, win 16425, length 0
第三、第四列显示信息为:源IP+PORT 目的IP+PORT,重点关注这两列即可
-i 指定抓取那个设备上的包
-nn 使显示结果为IP+PORT,若不加则显示结果为:主机名+服务名
二、Linux网络相关
1.ifconfig 查看网卡信息
修改网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0
重启网卡 service network restart
2.给一个网卡设定多个IP
#cd /etc/sysconfig/network-scripts/
#cp ifcfg-eth0 ifcfg-eth0\:1 将eth0的配置文件拷贝到eth0:1
#vi ifcfg-eth0\:1
DEVICE=eth0:1 HWADDR=00:0C:29:D9:F0:52 TYPE=Ethernet UUID=a5442526-0329-421d-86cf-8d7f16d01374 ONBOOT=yes BOOTPROTO=none IPADDR=192.168.80.5 NETMASK=255.255.255.0 GATEWAY=192.168.80.2 NM_CONTROLLED=yes
再重启网卡service network restart,即可
3.查看网卡连接状态
#mii-tool eth0
显示link ok则状态正常;no link则网卡坏掉或者没有连接网线(即为直接判断网卡状态)
4.更改主机名 hostnamectl
#hostnamectl 查看static,transient,pretty三种状态的主机名
#hostnamectl set-hostname jasonhost 同时修改三个状态的主机名
修改后立即生效,重启后也有效。
127.0.0.1 jasonhost hunk_zhu
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain
::1 localhost localhost.localdomain localhost6 localhost6.localdomai
修改/etc/hosts下的相应主机名,很多时候开机启动慢时,考虑此原因。
5.设置 DNS
查看配置的DNS服务器的ip,同时也可以修改配置,指定DNS
[root@localhost ~]# vim /etc/resolv.conf ; generated by /sbin/dhclient-script nameserver 202.106.46.151
修改域名解析映射表。修改后,pingwww.baidu.com域名则目的IP为192.168.1.111
[root@localhost ~]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.111 www.baidu.com
一个IP可以对应多个域名;但是一个域名只能解析一个IP;相同的域名出现在多行时,最先匹配原则。
三、Linxu防火墙
1.selinux
redhat/centos特有的安全机制,但因为配置复杂,限制太多,很少有人真正使用。
一般关闭selinux,避免不必要的麻烦。
#vi /etc/selinux/config
SELINUX=disabled(关闭,没有运行)/enforcing(默认,强制模式,开始限制)/permissive(宽容模式,仅会有警告信息)
#getenforce 查看selinux的状态
#setenforce enforcing/permissive/1/0,临时设置
2.Iptables ,Linux上特有的防火墙
系统管理中,日常常用到一两个应用,但是功能非常强大
Centos上默认没有iptables规则
/etc/init.d/iptables save 保存防火墙文件到/etc/sysconfig/iptables;
iptables -nvL查看规则;
iptables -F 清空当期规则,但是只是临时的,没有修改配置文件中的内容;
2.1 iptables的三个表
filter:保存过滤规则,系统预设表,最常用。内建三个链INPUT/OUTPUT/FORWARD
INPUT: 作用于进入本机的包
OUTPUT:作用 于送出的包
FORWARD:作用于那些跟本机无关的包
nat:保存网络地址转换规则,也有三个链PREROUTING/OUTPUT/POSTROUTING
PREROUTING:作用于其他主机发出的包刚到防火墙时改变目的地址的包
OUTPUT:改变本地产生包的目的地址
POSTROUTING:作用于离开防火墙的包改变其源地址
mangle:主要给包打标记,然后根据标记做相应操作。几乎不用,高级网络工程师使用。
2.2 iptables基本语法
#iptables -t nat -nvL
-t 指定表名,若不加,则默认显示filter表的信息;-nvL 查看该表的规则,-n不针对IP反解析主机名,-L列出信息,-v详细信息;
#iptables -F 删除所有规则
#iptables -Z 把包和流量计算器归零(很有用)
#iptables -A INPUT -s 10.10.86.90 -p tcp --sport 1234 -d 10.10.86.100 --dport 80 -j DROP
省略-t,则针对默认表filter;-A,表示增加一条规则(-I,插入;-D,删除一条规则);INPUT,作用链(还以OUTPUT/FORWORD);-s/-d,源地址/目的地址;给源地址反馈;ACCEPT允-p,协议(tcp,udp,icmp);--sport/--dport 源端口/目标端口;-j,后跟动作;DROP把包丢掉,不会反馈(REJECT拒绝,会许)
#iptables -I INPUT -s 1.1.1.1 -j DROP 在filter表中插入一条规则,丢掉源地址1.1.1.1的包
#iptables -D INPUT -s 1.1.1.1 -j DROP 删除刚插入的规则,删除规则必须与原有规则一致
#iptables -I INPUT -s 2.2.2.2 -p tcp --sport 80 -j DROP 丢掉2.2.2.2的80端口发出的数据包
#iptables -I OUTPUT -p tcp --dport 22 -d 2.2.2.2 -j DROP 丢掉发往2.2.2.2的80端口的包
#iptables -I INPUT -s 2.2.2.0/24 -i eth0 -j ACCEPT 将来自2.2.2.0/24网段并且作用在eth0的包放行
作用于FORWARD链几乎没用到。-i,指定网卡,很少用到。
#iptables -nvL --line-numbers显示每天规则相应的编号
#iptables -D INPUT 1 删除INPUT链上第一条规则,必须要指定链名,因为每条链上规则独立。
2.2.1 -P
表示预设策略,默认策略,策略内容为DROP或者ACCEPT,默认ACCEPT
#iptables -P INPUT DROP 设置默认策略为DROP,远程连接时,该命令后断开ssh
#iptables -F无法情况该规则
#iptables -P INPUT ACCEPT 只有通过该命令才能恢复远程连接,
[root@localhost ~]# cat /usr/local/sbin/iptables.sh #! /bin/bash ipt="/sbin/iptables" $ipt -F $ipt -P INPUT DROP $ipt -P OUTPUT ACCEPT $ipt -P FORWARD ACCEPT $ipt -A INPUT -s 192.168.137.0/24 -p tcp --dport 22 -j ACCEPT $ipt -A INPUT -p tcp --dport 80 -j ACCEPT $ipt -A INPUT -p tcp --dport 21 -j ACCEPT
该shell脚本实现:针对filter表,预设INPUT链DROP,其他两个链ACCEPT;针对源地址192.168.167.0/24网段主机开放22断开;针对所有网段开放21和80端口。
若想该规则shell开机启动,则在开机初始化时启动该防火墙规则
2.2.2 丢掉icmp包,使其他主机不能ping本机,但本机能ping外网
#iptables -I INPUT -p icmp --icmp-type 8 -j DROP
--icmp-type 8指的就是使本机能ping外网,外网不能ping本机。切记,常用
2.3 NAT表的应用
#echo "1" >/proc/sys/net/ipv4/ip_forward
#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASOUERADE
将1292.168.1.0/24网段的主机通过eth0访问外网,即eth0实现路由转发的功能。
MASOUERADE伪装的意思:伪装
2.4 iptables 服务启动暂停和保存备份
#service iptables status 查看iptables服务的状态
= #systemctl status iptables
#systemctl enable iptables 在系统开机服务中添加iptables服务
#systemctl disable iptables 开机服务中禁用iptables服务 ,则开机时不会自动检测/etc/sysconfig/iptables文件
#systemctl start iptables 启动iptables服务
#systemctl stop iptables 暂停iptables服务
#service iptables save 将防火墙规则保存到/etc/sysconfig/iptables文件中
该命令有效执行的前提,yum -y install iptables 两个文件都已安装
yum -y install iptables.service
#iptables-save > myipt.rule 将iptables规则备份到本地指定文件中
#iptables-restore < myipt.rule 将指定文件中的规则恢复到/etc/sysconfig/iptables中
四、系统任务计划 cron
cron计划任务都是通过crontab命令完成
/etc/crontab 全局配置文件
crontab -u/-e/-l/-r
-u: 指定某个用户,不加 -u 则为当前用户;
-e:制定计划任务(enact制定)
-l:列出计划任务
-r:删除计划任务
#crontab -e
01 10 05 06 3 echo "ok" > /root/cron.log
从左到右:分 时 日 月 周。 表示:6月5号(这一天必须是星期3),10:01,执行命令echo "ok" >/root/cron.lo
该命令实际打开/var/spool/cron/username文件,并使用vim编辑器编写计划任务,wq 保存退出
#crontab -l
查看/var/spool/cron/username文件中的计划任务
#crontab -r
删除计划任务
每天凌晨1点20分清除/var/log/slow.log这个文件
每周日3点执行 “/bin/sh /usr/local/sbin/backup.sh”
每月14号4点10分执行 “/bin/sh /usr/local/sbin/backup_month.sh”
每隔8小时执行 “ntpdate time.windows.com”
每天的1点,12点,18点执行 “/bin/sh /usr/local/sbin/test.sh”
每天的9点到18点执行 “/bin/sh /usr/local/sbin/test2.sh”
1. 20 1 * * * echo "" >/var/log/slow.log 2. 0 3 * * 0 /bin/sh /usr/local/sbin/backup.sh 3. 10 4 14 * * /bin/sh /usr/local/sbin/backup_month.sh 4. 0 */8 * * * ntpdate time.windows.com 5. 0 1,12,18 * * /bin/sh /usr/local/sbin/test.sh 6. 0 9-18 * * * /bin/sh /usr/local/sbin/test2.sh
保存路径/var/spool/cron/username
# service crond status 查看crond服务的状态
# systemctl crond disable/enable 修改crond服务是否开机启动,只能用systemctl修改
# service crond stop/start
= # systemctl crond stop/start 都可以修改crond服务的状态
五、Linux系统服务管理
1.开机启动的服务,日常用不到服务停掉,节省资源;减少安全隐患。
建议只开启“crond,iptables,network,sshd,syslog,irqbalance,sendmail,microcode_ctl”服务
#vtsysv 直接打开服务配置界面
#yum -y instll vtsysv 安装命令
2. chkconfig 服务管理工具
系统预设服务,可以在 /etc/init.d/目录下看到有哪些服务
这些系统服务都可以通过这条命令实现:
#service 服务名 start/stop/restart
#/etc/init.d/crond start/stop/restart
# chkconfig --list 查看每个服务针对不同运行级别的状态
# chkconfig --list |gerp cron
运行级别:0 shutdown;1 重启至单用户模式;6 reboot;--被系统保留
2 无NFS(网络)支持多用户模式;3 完全多用户、命令行模式;
4 保留给用户自定义;5 图形登录模式。
#chkconfig --level 3 crond off 关闭level 3的crond服务
#chkconfig --level 345 crond off 同时关闭level3 4 5 的crond服务
#chkconfig crond on 省略级别,默认针对2,3,4,5
#chkconfig --add crond 将crond服务添加到服务项
#chkconfig --del crond 删除
(在centos 7中chkconfig无效,systemctl status 查看相应启动项服务状态)
五、Linux下的数据备份工具rsync
系统管理员最不应该出现的事故:数据丢失。数据提前做好备份
rsync = remote sync 远程同步
既有远程数据同步(类似scp)
又有本地数据同步(类似cp和scp),但是cp和scp将数据覆盖,而rsync会坚持两份数据的不同,并将不同的部分同步过去。
安装rsync:
yum -y install rsync
# rsync -av 123.txt /tmp/ 把当前目录下的123.txt同步到/tmp/目录下
# rsync -av 123.txt /tmp/234.txt 同步到指定目录下,并且该名字
# rsync -av 123.txt 192.1468.0.101:/data/ 远程拷贝,
拷贝192.168.0.101主机/data/目录下的内容
IP:path,例如10.10.2.34:/root/
连接远程主机时,会要求输入密码。但在脚本中,则要先添加信任关系。
5.1 rsync的命令格式
rsync [OPTION]...SRC DST将本机的源文件同步到本地其他目录下
rsync [OPTION]...SRC [USER@]HOST:DST将本地源文件同步到指定主机、用户、目录下
rsync [OPTION]...[USER@]HOST:SRC DST将远程指定主机、用户、源文件同步到本地目录下
rsync [OPTION]...[USER@]HOST::SRC DST
rsync [OPTION]...SRC [USER@]HOST::DST第四五种,两个 :: 和第二三个区别在于验证方式不同
5.2 rsync常用选项
-a 归档模式,以递归方式传输文件,保持所有属性,等同-rlptgoD,若-a--no-l,则等同于-rptgoD
-v 打印一些信息
-r 对子目录以递归模式,主要针对目录,单独穿文件则不需要加-r,但是传输的是目录,则必加-r
-l 保留软连接
-L 像对待常规文件一样处理软连接,如果SRC中有软连接文件,则加上该选项后,会将软连接指向的目标文件拷贝到DST
-p 保持文件权限
-o 保持文件属主信息
-g 保持文件属组信息
-D 保持设备文件信息
-t 保持文件时间信息
--delete 删除那些DST中SRC没有的的文件,即DST中比SRC多出的文件则会被删除
--exclude=PATTERN 指定排除不需要传输的文件,等号后面跟文件名,可以用万用字符模式 *.txt
--progress 在同步过程总可以看到同步的过程状态,同步的文件数量、同步文件传输速度...
-u 将DST中比SRC还新的文件排除掉,不会覆盖
常用选项(-a -v --delete --exclude),熟记。
# rsync -a test1 test2 新建test2目录,然后将test1目录放到test2下
# rsync -a test1/ test2/ 备份目录时,要加上 / ,直接将test1目录拷贝成test2,重命名。
# rsync -av --no-l test1/ test2/
-v 显示过程。-a = -rlptgoD,而没有-L,即不对软连接指向的目标文件做同步备份
-l,则是把软连接文件拷贝过去;-L,则是把软连接指向的目标文件拷贝过去
# rsync -avL test1/ test2/ 将会把test1中的软连接文件指向的目标文件也一起同步备份到test2
# rsync -avu test1/ test2/ 比较test2目录是否比test1目录更新,若是,则选择不覆盖;若不是,test1/目录更新,则将test1/ 拷贝覆盖test2/
-u 将更新SRC覆盖到DST;若DST更新,则不覆盖。
# rsync -av --delete test1/ test2/ 将test1目录备份给test2/的过程中,将test2/中多出的文件删除
# rsync -av --exclude="*.ex" test1/ test2/ 将test1/同步给test2/的过程中,排除*.ex文件,不同步。
(主要用的rsync选项,-av / -u / --no-OPTION / -L / --delete / --exclude )
5.3 rsync应用实例
# rsync -avL test1/ www@192.168.0.101:/tmp/test2/
将本地test1/目录同步到远程192.168.0.101www用户下的/tmp/test2/目录下。类似上传
# rsync -avL www@192.168.0.101:/tmp/test2/ ./test3/
将远程主机/tmp/test2/目录下载同步到本地/test3/路径下,类似下载。
这两个同步方式都需要输入用户登录密码,脚本则不能自动完成。 脚本完成同步,则通过密钥验证,密钥不设立密码
5.3.2 后台服务的方式
即在远程主机上建立rsync服务器,并配置好各种应用,然后本机作为rsync的一个客户端连接远程rsync服务器。
5.3.2.1 配置rsync服务
#vim /etc/rsyncd.conf
port=873 指定开启rsyncd服务的端口,默认873
log file=/var/log/rsync.log 指定日子文件
pid file=/var/run/rsync.pid 指定pid文件,涉及到服务的启动以及停止等进程操作
#address=192.168.0.10 指定启动rsyncd服务的IP。加入机器上有多个IP,可以指定一个IP
启动rsyncd服务。默认所有IP都启动
[test] 指定模块名
path=/root/rsync 指定数据存放的路径
use chroot=true 指定是否chroot到path指定的路径下,true|false,默认true
但需要roots权限,不能备份指向外部链接(软链接)文件(选false)
max connections=4 指定最大连接数,默认是0,没有限制
read only=no 是否为只读,true|fales,若为true,则不能上传
list=true 在查询该服务器上的可用模块是,是否列出该模块,true|false
uid=root 指定传输文件时,以哪个用户/ 组的身份传输
gid=root
auth users=test 指定传输时要使用的用户名
secrets file=/etc/rsyncd.passwd 指定密码文件,该参数不指定则不使用密码验证,注意
该密码文件权限一定600
hosts allow=192.168.0.101 指定被允许连接该模块的主机,是IP或者网段,多个用空格隔开
5.3.2.2 编辑secret file文件
#vi /etc/rsyncd.passwd
test:test123
#chmod 600 /etc/rsyncd.passwd 保存后一定要修改权限600,不对则不能同步
5.3.2.3 启动rsyncd服务
# rsync --daemon --config=/etc/rsyncd.conf
# cat /var/log/rsync.log 查看日志,是否正常启动
# netstat -lnp |grep 873 检查端口是否启动
如果想开机启动
rsync --daemon --config=/etc/rsyncd.conf 写到/etc/rc.d/rc.local中。
5.3.2.4 测试--另一台主机
rsync -avL test@192.168.0.10::test/test1/ /tmp/test6/
因为user chroot=true,则在同步软连接时候会报错。修改成false
# sed -i 's/use chroot=true/use chroot=false/' /etc/rsyncd.conf
# grep 'use chroot' /etc/rsyncd.conf
修改完rsyncd.conf配置文件后,即时生效,不需重启服务。
在输入密码时,指定密码文件,在脚本中可以自动执行
第一种:
# vi /etc/pass 定义密码文件
# chmod 600 /etc/pass 被指定的密码文件,权限必须600
# rsync -avL test@10.10.86.100::test/test1/ tmp/test8/ --passwword-file=/etc/pass
第二种:
# sed -i 's/auth users/#auth users/;s/#secrets file/secrets file/' /etc/rsyncd.con
用 ; 把两个sed语句总的替换子命令分开。
# rsyncd -avL 10.10.86.100::test/test1/ /tmp/test9/
没有指定需要使用哪个用户登录传输,默认使用root用户身份。
六、Linux系统日志
日志记录系统每天发生的各种事情,检查错误发生的原因,***后留下的痕迹。
日志的主要功能:审计、监测系统状态,监测和追踪***者。
最常用的日志文件/var/log/message, 核心日志文件,包括系统启动时的引导消息,以及其他运行状态:I/O错误,网络错误和其他系统错误。以及某个用户身份切换为root,及用户自定义软件apache的日志也会出现在这里。
/var/log/message故障诊断时,首先要看的文件。
每星期切换一次,通过logrotate工具控制,配置文件/etc/logrotate.conf
/var/log/message是由syslogd守护进程产生的,若停掉该服务,则不会产生/var/log/message
syslogd服务的配置文件/etc/syslog.conf,没有特殊需求不要修改这个配置文件。
# dmesg 可以查看硬件问题(比如网卡信息)
6.1 安全方面日志
# last
查看登录Linux历史信息,账号、登录终端、登录ip、登录日期、时长。
last输出信息,实质上是/var/log/wtmp日志文件,但是不能通过cat、vim、head、tail工具查看。
# /var/log/secure 登录信息有关日志文件,记录验证和授权方面信息,例如ssh登录系统成功或失败都会记录。可以查看是否有人在爆破***。
建议:经常查看日志文件,尤其软件日志,比如Apache、mysql、PHP等软件。
七、xargs和exec
xargs工具,就是把管道符前面的输出作为xargs后面命令的输入。通常,和find一起使用
将本来要多步才能完成的任务简单一步就能完成。
# find . mtime +10 |xargs rm查找当前目录下创建时间超过10的文件,并且删除
# ls *.txt |xargs -n1 -i{} mv {} {}_bak
xargs -n1 -i{} 类似for循环,-n1意思一个一个去处理对象,-i{}把前面的对象用{}取代,mv {} {}_bak对对象重命名。
exec应用工具。
经常与find一起使用。# find . -mtime +10 -exec rm -rf {} \; 查找创建时间大于10天的文件并删除。
# find ./*_txt -exec mv {} {}_bak \; 实现的功能和上面xargs一样
八、screen工具
执行命令或者脚本时,可能需要运行几小时或者几天。中途断网或意外情况,那么在终端开启的任务就会中断,丢到后台运行也不保险。
8.1 使用 nohup
# vi /usr/local/sbin/sleep.sh
#! /bin/bash
sleep 1000
# nohup sh /usr/local/sbin/sleep.sh & 若没有nohup,单纯 & ,则仍有可能退出终端时退出脚本。nohup的作用就是不挂断的运行命令。
8.2 screen工具的使用
用户在一个screen会话中创建多个screen窗口,每个screen窗口中就像操作一个真实的ssh连接。
如果没有screen命令,则 # yum -y install screen
# screen 直接打开一个会话
# screen -ls 查看已经打开的screen会话,有编号
Ctrl+a再按d退出该screen会话,只是退出,没有结束。结束的话Ctrl+d或者exit
退出还想再次登录某个screen会话,使用screen -r [编号]