Linux面试题

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


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值