1 已知目录结构 尽量多的方法显示一级目录结构
[root@VM_1_5_centos data]# ls -l /data
total 40
drwxr-xr-x 9 root root 4096 Aug 1 16:30 Downloads
drwxrwxrwx 4 root root 4096 Jul 17 09:38 lzcq_yglzcs2300998_192144164137_2300998
drwxrwxrwx 4 root root 4096 Jul 17 09:38 lzcq_yglzcs2300998_192144164137_login
-rwxr--r-- 1 root root 27 Jul 31 16:06 md5sum.log
-rwxr--r-- 1 root root 278 Jul 31 16:27 md5sum.sh
drwxr-xr-x 3 root root 4096 Jul 16 18:19 mysql_data
drwxr-xr-x 2 root root 4096 Aug 1 20:11 oldboy
-rwxr--r-- 1 root root 182 Jul 31 14:30 rename.sh
-rwxr--r-- 1 root root 144 Jul 31 15:18 tel.sh
-rwxr-xr-x 1 root root 349 Jul 31 14:21 test.sh
- 方法1 ls -lh /data/ | grep "^d" 过滤属性类型为d 的文件
- 方法2 tree -L 1 /data/ tree -L 1显示一级目录 这个不算 写错了
- 方法3 ls -F | grep "/$" ls -F 或者 ls -p 给目录做标识 然后过滤/$结尾的
- 方法4 find /data/ -type d !name "." find方法查找目录类型为d的 然后! -name "."过滤掉自身目录
- 方法5 ls -lh /data | awk '{if ($2>1) print $0}' 这个方法如果文件存在硬链接的情况下不适用 过滤出硬链接数大于2的文件
- 方法6 ls -lh /data/ | sed -n '/^d/p'
- 方法7 ls -lh /data/ | awk '/^d/'
2 已知目录结构 尽量多的方法删除7天之前的日志文件
[root@VM_1_5_centos logs]# ll
total 0
-rw-r--r-- 1 root root 0 Jul 1 00:00 access_www_2018-07-01.log
-rw-r--r-- 1 root root 0 Jul 2 00:00 access_www_2018-07-02.log
-rw-r--r-- 1 root root 0 Jul 3 00:00 access_www_2018-07-03.log
-rw-r--r-- 1 root root 0 Jul 4 00:00 access_www_2018-07-04.log
-rw-r--r-- 1 root root 0 Jul 5 00:00 access_www_2018-07-05.log
-rw-r--r-- 1 root root 0 Jul 6 00:00 access_www_2018-07-06.log
-rw-r--r-- 1 root root 0 Jul 7 00:00 access_www_2018-07-07.log
-rw-r--r-- 1 root root 0 Jul 8 00:00 access_www_2018-07-08.log
-rw-r--r-- 1 root root 0 Jul 9 00:00 access_www_2018-07-09.log
-rw-r--r-- 1 root root 0 Jul 10 00:00 access_www_2018-07-10.log
-rw-r--r-- 1 root root 0 Jul 11 00:00 access_www_2018-07-11.log
-rw-r--r-- 1 root root 0 Jul 12 00:00 access_www_2018-07-12.log
-rw-r--r-- 1 root root 0 Jul 13 00:00 access_www_2018-07-13.log
-rw-r--r-- 1 root root 0 Jul 14 00:00 access_www_2018-07-14.log
-rw-r--r-- 1 root root 0 Jul 15 00:00 access_www_2018-07-15.log
-rw-r--r-- 1 root root 0 Jul 16 00:00 access_www_2018-07-16.log
-rw-r--r-- 1 root root 0 Jul 17 00:00 access_www_2018-07-17.log
-rw-r--r-- 1 root root 0 Jul 18 00:00 access_www_2018-07-18.log
-rw-r--r-- 1 root root 0 Jul 19 00:00 access_www_2018-07-19.log
-rw-r--r-- 1 root root 0 Jul 20 00:00 access_www_2018-07-20.log
-rw-r--r-- 1 root root 0 Jul 21 00:00 access_www_2018-07-21.log
-rw-r--r-- 1 root root 0 Jul 22 00:00 access_www_2018-07-22.log
-rw-r--r-- 1 root root 0 Jul 23 00:00 access_www_2018-07-23.log
-rw-r--r-- 1 root root 0 Jul 24 00:00 access_www_2018-07-24.log
-rw-r--r-- 1 root root 0 Jul 25 00:00 access_www_2018-07-25.log
-rw-r--r-- 1 root root 0 Jul 26 00:00 access_www_2018-07-26.log
-rw-r--r-- 1 root root 0 Jul 27 00:00 access_www_2018-07-27.log
-rw-r--r-- 1 root root 0 Jul 28 00:00 access_www_2018-07-28.log
-rw-r--r-- 1 root root 0 Jul 29 00:00 access_www_2018-07-29.log
-rw-r--r-- 1 root root 0 Jul 30 00:00 access_www_2018-07-30.log
-rw-r--r-- 1 root root 0 Jul 31 00:00 access_www_2018-07-31.log
- 方法1 find /data/app/logs/ -type f -mtime +7 | xargs rm -rf
- 方法2 find /data/app/logs/ -type f -mtime +7 -exec rm -rf {} \;
- 方法3 rm -rf `find /data/app/logs -type f -mtime +7`
3 显示文件内容并显示行号
- 方法1 cat -n filename.sh
- 方法2 nl filename.sh
- 方法3 grep -n . filename.sh
- 方法4 awk '{print NR,$0}' filename.sh
- 方法5 sed=filename.sh | sed 'N:s/\n/ /
- 方法6 less -N filename.sh
4 优化Linux精简开机自启动服务
- 思路1:直接关掉非开机启动项
- chkconfig --list | grep 3:on | grep -vE "crond|sshd|network|rsyslog|sysstat"|awk '{print "chkconfig",$1,"off"}'|bash
- 思路2:关掉全部3级别启动项 在开启所需启动项
- chkconfig --list | grep 3:on | awk '{print "chkconfig",$1,"off"}' |bash
- chkconfig --list | egrep "crond|sshd|network|rsyslog|sysstat" | awk '{print "chkconfig",$1,"on"}' | bash
5 取出ifconfig第二行IP信息中的第一个ip地址
[root@bogon extra]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.42.200 netmask 255.255.255.0 broadcast 172.16.42.255
inet6 fe80::20c:29ff:fe96:935e prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:96:93:5e txqueuelen 1000 (Ethernet)
RX packets 71348 bytes 73074752 (69.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 21669 bytes 3071577 (2.9 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- 思路1:ifconfig | sed -n '2s#^.*et ##gp' | sed 's# net.*$##g'
- 思路2:ifconfig | sed -nr '2s#^.*et (.*) ne.*$#\1#gp' 后向引用
[root@bogon extra]# ifconfig | sed -nr '2s#^.*et (.*) ne.*$#\1#gp'
172.16.42.200
[root@bogon extra]# ifconfig | sed -n '2s#^.*et ##gp' | sed 's# net.*$##g'
172.16.42.200
6 将/etc/passwd文件中的内容以第一个参数与最后一个参数互相调换位置
[root@bogon tools]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
nginx:x:1000:1000::/home/nginx:/sbin/nologin
mysql:x:1001:1001::/home/mysql:/sbin/nologin
- 思路1:awk -F ":" '{print $7":"$2":"$3":"$4":"$5":"$6":"$1}' /etc/passwd 利用awk分隔符截取
- 思路2:sed -r 's#(.*)\:(.*)\:(.*)\:(.*)\:(.*)\:(.*)\:(.*)#\7\:\2\:\3\:\4\:\5\:\6\:\1#g' /etc/passwd
- 思路3:sed -r 's#([^:]+)(:.*:)(/.*$)#\3\2\1#g' /etc/passwd
[root@bogon tools]# awk -F ":" '{print $7":"$2":"$3":"$4":"$5":"$6":"$1}' /etc/passwd
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
/sbin/nologin:x:3:4:adm:/var/adm:adm
/sbin/nologin:x:4:7:lp:/var/spool/lpd:lp
/bin/sync:x:5:0:sync:/sbin:sync
/sbin/shutdown:x:6:0:shutdown:/sbin:shutdown
/sbin/halt:x:7:0:halt:/sbin:halt
/sbin/nologin:x:8:12:mail:/var/spool/mail:mail
/sbin/nologin:x:11:0:operator:/root:operator
/sbin/nologin:x:12:100:games:/usr/games:games
/sbin/nologin:x:14:50:FTP User:/var/ftp:ftp
/sbin/nologin:x:99:99:Nobody:/:nobody
/sbin/nologin:x:192:192:systemd Network Management:/:systemd-network
/sbin/nologin:x:81:81:System message bus:/:dbus
/sbin/nologin:x:999:997:User for polkitd:/:polkitd
/sbin/nologin:x:89:89::/var/spool/postfix:postfix
/sbin/nologin:x:998:996::/var/lib/chrony:chrony
/sbin/nologin:x:74:74:Privilege-separated SSH:/var/empty/sshd:sshd
/sbin/nologin:x:1000:1000::/home/nginx:nginx
/sbin/nologin:x:1001:1001::/home/mysql:mysql
[root@bogon tools]# sed -r 's#(.*)\:(.*)\:(.*)\:(.*)\:(.*)\:(.*)\:(.*)#\7\:\2\:\3\:\4\:\5\:\6\:\1#g' /etc/passwd
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
/sbin/nologin:x:3:4:adm:/var/adm:adm
/sbin/nologin:x:4:7:lp:/var/spool/lpd:lp
/bin/sync:x:5:0:sync:/sbin:sync
/sbin/shutdown:x:6:0:shutdown:/sbin:shutdown
/sbin/halt:x:7:0:halt:/sbin:halt
/sbin/nologin:x:8:12:mail:/var/spool/mail:mail
/sbin/nologin:x:11:0:operator:/root:operator
/sbin/nologin:x:12:100:games:/usr/games:games
/sbin/nologin:x:14:50:FTP User:/var/ftp:ftp
/sbin/nologin:x:99:99:Nobody:/:nobody
/sbin/nologin:x:192:192:systemd Network Management:/:systemd-network
/sbin/nologin:x:81:81:System message bus:/:dbus
/sbin/nologin:x:999:997:User for polkitd:/:polkitd
/sbin/nologin:x:89:89::/var/spool/postfix:postfix
/sbin/nologin:x:998:996::/var/lib/chrony:chrony
/sbin/nologin:x:74:74:Privilege-separated SSH:/var/empty/sshd:sshd
/sbin/nologin:x:1000:1000::/home/nginx:nginx
/sbin/nologin:x:1001:1001::/home/mysql:mysql
[root@bogon tools]# sed -r 's#([^:]+)(:.*:)(/.*$)#\3\2\1#g' /etc/passwd
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
/sbin/nologin:x:3:4:adm:/var/adm:adm
/sbin/nologin:x:4:7:lp:/var/spool/lpd:lp
/bin/sync:x:5:0:sync:/sbin:sync
/sbin/shutdown:x:6:0:shutdown:/sbin:shutdown
/sbin/halt:x:7:0:halt:/sbin:halt
/sbin/nologin:x:8:12:mail:/var/spool/mail:mail
/sbin/nologin:x:11:0:operator:/root:operator
/sbin/nologin:x:12:100:games:/usr/games:games
/sbin/nologin:x:14:50:FTP User:/var/ftp:ftp
/sbin/nologin:x:99:99:Nobody:/:nobody
/sbin/nologin:x:192:192:systemd Network Management:/:systemd-network
/sbin/nologin:x:81:81:System message bus:/:dbus
/sbin/nologin:x:999:997:User for polkitd:/:polkitd
/sbin/nologin:x:89:89::/var/spool/postfix:postfix
/sbin/nologin:x:998:996::/var/lib/chrony:chrony
/sbin/nologin:x:74:74:Privilege-separated SSH:/var/empty/sshd:sshd
/sbin/nologin:x:1000:1000::/home/nginx:nginx
/sbin/nologin:x:1001:1001::/home/mysql:mysql
7 将文件权限信息转换为数字并显示出来
[root@bogon blog]# ls -ld wordpress
drwxr-xr-x. 2 nginx nginx 6 8月 7 18:13 wordpress
[root@bogon blog]# stat wordpress
文件:"wordpress"
大小:6 块:0 IO 块:4096 目录
设备:fd00h/64768d Inode:51210089 硬链接:2
权限:(0755/drwxr-xr-x) Uid:( 1000/ nginx) Gid:( 1000/ nginx)
环境:unconfined_u:object_r:default_t:s0
最近访问:2018-08-07 20:33:54.202211414 +0800
最近更改:2018-08-07 18:13:46.089183662 +0800
最近改动:2018-08-07 18:14:14.406480426 +0800
创建时间:-
- 思路1:ls -ld wordpress | cut -c 2-10 | tr "rwx-" "4210" | awk -F "" '{print $1+$2+$3""$4+$5+$6""$7+$8+$9}'
- 思路2:stat wordpress | sed -nr "s#^.*\(0(.*)\/dr.*$#\1#gp"
- 思路3:stat wordpress | awk -F "[0/]" 'NR==4{print $2}'
- 思路4:stat -c %a wordpress
[root@bogon blog]# ls -ld wordpress/ | cut -c 2-10 | tr "rwx-" "4210" | awk -F "" '{print $1+$2+$3""$4+$5+$6""$7+$8+$9}'
755
[root@bogon blog]# stat wordpress | sed -nr 's#^.*\(0(.*)\/dr.*$#\1#gp'
755
[root@bogon blog]# stat wordpress | awk -F "[0/]" 'NR==4{print $2}'
755
[root@bogon blog]# stat -c %a wordpress
755