每日一题20180330-Linux
一、问题
1.1
统计/var/log/下所有文件个数
1.2
查找出/var/log目录下面修改时间是7天以前,大小在50k到2M之间,并以.log结尾的文件把这些文件复制到/data目录中
1.3
设置一条Iptables规则,允许192.168.10.0段访问873端口?
二、答案
2.1
find /var/log/ ! -type d | wc -l
ll -R /var/log | egrep "^[sl-][rwx-]{9}"| wc -l
tree /var/log/ | awk 'END{print $3}'
分析:
1、/var/log/下所有文件包括当前目录和子目录以及子目录的子目录下面的文件
2、linux下文件有很多类型,包括 普通文件、链接文件、字符设备文件、块设备文件、socket文件等
ls -l输出第一个字符含义
- 普通文件
d 目录
l 链接文件
c 字符设备文件
b 块设备文件
s socket文件
2.2
find /var/log -mtime +7 -size +50k -size -2M -name "*.log" | xargs -i cp {} /data
说明:
默认xargs不支持,{}这种形式,xargs加上-i就可以支持,-i参数就可以用{}花括号了。
查找出满足要求的文件使用find命令,把查找出来的文件批量执行某个命令有如下几种方式:
# 1.使用xargs,就是上面给出的答案
# 2.使用find的-exec参数
find ... -exec cp {} /tmp \;
# 3.因为是复制,可以使用cp -t参数
cp 苹果 苹果 苹果 筐
cp -t 筐 苹果 苹果 苹果
# 4.cp $(find ...) /data
$()表示先执行这个命令,然后把命令结果放在这个位置上面
ls -l $(which mkdir)
2.3
iptables -A INPUT -s 192.168.10.0/24 -p tcp --dport 873 -j ACCEPT
分析:
-A:向规则链中添加条目
-s:指定要匹配的数据包源ip地址;
-p:指定要匹配的数据包协议类型;
--dport: 指定目标端口
-j: 指定动作
动作包括:
ACCEPT:接收数据包。
DROP:丢弃数据包。
REDIRECT:重定向、映射、透明代理。
SNAT:源地址转换。
DNAT:目标地址转换。
MASQUERADE:IP伪装(NAT),用于ADSL。
LOG:日志记录。
规则链名包括:
INPUT链:处理输入数据包。
OUTPUT链:处理输出数据包。
PORWARD链:处理转发数据包。
PREROUTING链:用于目标地址转换(DNAT)。
POSTOUTING链:用于源地址转换(SNAT)。