1. 程式人生 > >Linux 練習題-3文件與磁盤 命令

Linux 練習題-3文件與磁盤 命令

系統運維 Linux

1、如何取得/etc/passwd 文件的權限對應的數字內容,如rw-r--r-- 644,要求使用命令取得644這樣的數字

stat file | sed -nr 's#^.*\(0(.*)/-.*$#\1#gp' #這裏的\(是對(進行了轉義

stat file | awk -F "[0/]" 'NR==4 {print $2}'

stat -c %a file

2linux下通過mkdir命令創建一個新目錄/cbl/one ,它的硬鏈接數是多少?

如果在/cbl/one 下面在創建一個目錄two。/cbl/one的硬鏈接數又是多少?

(1)目錄結構為/cbl/one/

時,/cbl/one的硬鏈接數為2,分別是

/cbl/one

/cbl/one/.

(2)目錄結構為/cbl/one/ two/ 時,/cbl/one的硬鏈接數為3,分別是

/cbl/one

/cbl/one/.

/cbl/one/two/..

(3)目錄下每多一個子目錄,硬鏈接數加1

3、執行命令取出linuxeth0IP地址(cut, awk , sed

  1. ifconfig eth0 | cut -d ":" -f 2 | head -2 | tail -1 | cut -d " " -f 1

  2. ifconfig eth0 | awk -F "[ :]+" 'NR==2 {print $4}

  3. ifconfig eth0 | sed -n '2p' | sed 's#^.*dr:##g' | sed 's# B.*$##g'

  4. ifconfig eth0 | sed -n '2s#^.*dr:##gp' | sed 's# B.*$##g'

  5. ifconfig eth0 | sed -nr 's#^.*dr:(.*) B.*$#\1#gp'(嚴格註意其中的空格)

  6. grep IPADDR /etc/sysconfig/network-scripts/ifcfg-eth0 | cut -d "=" -f2

4、交換/etc/passwd 的第一列和最後一列

head -1 /etc/passwd | sed -nr 's#([^:]+)(:.*:)(/.*$)#\2#gp'

5、在一個命令上加什麽參數可以實現後面命令的內容在一行輸出:echo "123" ; echo "456"

echo -n "123" ; echo "456"

6、過濾文件中的空行

grep -v '^$'

grep '^[^$]'

sed '/^$/d'

awk '/^[^$]/' 2

7、寫一個腳本,實現批量添加20個用戶,用戶名為user1-20,密碼為5個隨機字符

方法一:

#!/bin/bash

for n in `seq 20`;

do

useradd user$n

echo "`echo user$n|md5sum|cut -c4-8`" | passwd --stdin user$n

done

方法二:

#!/bin/bash

for n in `seq 20`;

do

useradd user$n

done

for n in `seq 20`:

do

echo "user$n:`echo user$n|md5sum|cut -c4-8`" | chpasswd

done

8、統計/var/log/下文件個數

ls -l /var/log/ | grep "^-" | wc -l

find /var/log/ -maxdepth 1 -type f | wc -l

tree -L 1 /var/log/ | tail -1

9、將監控腳本"/usr/local/nagios/libexe/m.sh"放入crontab內,使每7分鐘執行一次

*/7 * * * * /bin/sh /usr/local/nagios/libexe/m.sh >/dev/null 2>&1

10、如果磁盤的inode節點滿了,如何定位到問題所在地

find / -type f -size +1K | xargs -n 1 dirname | sort | uniq -c | sort -rn

11、設置一個定時任務,每天00分將/var/log/nginx 目錄下7天以前大於1G的日誌文件移到/date/201804XX(以前一天日期命名的)目錄中

(1)編寫腳本move_log.sh,放入scripts目錄

#!/bin/sh

dir=/date/`date +%F -d -1day`

mkdir $dir -p

/bin/find /var/log/nginx -type f -size +1G -mtime +7|xargs mv -t $dir

(2)編輯crontab

0 0 * * * /bin/sh /scripts/move_log.sh >/dev/null 2>&1

12、如何看到某用戶對系統所做的操作和系統登錄記錄

cat /home/user/.bash_history #看操作

last #列出目前與過去登入系統的用戶相關信息

13sed命令實現將a.txt中的abc替換為def

sed 's#abc#def#g' a.txt

14、列出/root下各個子目錄占用的空間大小

cd /root

ls -d */ | xargs du -sh

15、編寫shell腳本,在目錄/tmp下找到10個以abc開頭的文件,然後把這些文件的第一行保存到文件new

(1)環境模擬:

touch abc{1..60}

find . -type f -name "abc*"| xargs -n 1 | awk '{print"echo cbl >"$0}'| bash

(2)實驗:

find . -type f -name "abc*" | head | xargs head -1 -q > new

find . -type f -name "abc*" | head | xargs -n 1 head -1 >new


Linux 練習題-3文件與磁盤 命令