Linux復習例題


  1、創建目錄/data
mkdir  /data
cd /;mkdir data

 

  2、用一條命令創建目錄/oldboy/test

mkdir -p /oldboy/test

 

  3、把/data目錄移動到/root目錄下

mv /data    /root

 

  4、在/data下創建oldboy.txt文件

1touch /data/oldboy.txt
2、cd /data;touch oldboy.txt

 

  5、為oldboy.txt文件添加內容,‘I am studying Linux’

使用vi或vim編輯文件
echo 'I am studying Linux' > /data/oldboy.txt
cat >>/data/oldboy.txt<<EOF
I am studying Linux
EOF

 

  6、將oldboy.txt文件復制到/tmp目錄下

cp -rpf  /data/oldboy.txt  /tmp

 

  7、進入/root/data目錄,刪除oldboy.txt文件

cd  /root/data;rm  -f  oldboy.txt
find /root/data -type f -a -name 'oldboy.txt' -exec rm {} \;
find /root/data -type f -a -name 'oldboy.txt'|xargs rm -f
find /root/data -type f -name 'oldboy.txt' -delete

 

  8、從/root/data目錄下返回上一級目錄,刪除data目錄

cd ..;rm  -rf  data
cd ..;find . -type d -name 'data'|xargs rm -rf
cd ..;find . -type d -name 'data' -delete

 

  9、已知文件test.txt內容如下

    test

    liyao

    oldboy

  輸出文件的內容,不包含oldboy

head -2 test.txt
grep  -v 'oldboy' test.txt
sed -n '1,2'p test.txt
awk 'NR<3' test.txt

 

  10、只查看ett.txt文件的第20到30行的內容

head -30 ett.txt|tail  -11
sed -n '20,30'p ett.txt
grep 20 -A 10 ett.txt
awk 'NR>19&&NR<31'  ett.txt

 

  11、分析圖片服務日志,把日志(每個圖片訪問次數*圖片大小總和)排行,取top10,需要輸出訪問次數、訪問次數*單個文件大小、文件名,用awk的數組

awk '{array_num[$7]++;array_size[$7]+=$10}END{for (x in array_num) {print array_size[x],array_num[x],x}}' access_2010-12-8.log|sort -rn -kl|head -10 >1.log #數組array_num和array_size以文件名為索引分別存儲文件的訪問次數和文件所占帶寬,然后循環數組array_num拿到文件名,根據文件名輸出文件訪問次數,文件所占帶寬,文件名

awk '{print $7"\t" $10}' access_2010-12-8.log|awk '{S[$1]+=$2,S1[$1]+=1}END{for (i in S) print S[i],S1[i],i}'|sort -rn|head -10 >2.log #與方法一類似,數組S和數組S1以文件名為所有分別存儲文件所占帶寬和文件訪問次數

cut -d '' -f 7,10 access_2010-12-8.log|sort|uniq -c|awk '{print $1*$3""$1""$2}'|sort -rnk 1|head -10 >3.log #利用cut獲取文件名及其對應的大小,然后用sort和uniq獲得每個文件的訪問次數,再用awk獲得文件所占帶寬,文件訪問次數,文件名,最后降序排序后,用head獲得前十行數據

 

  12、把/oldboy目錄及其子目錄下所有以擴展名.sh結尾的文件中包含oldboy的字符串全部替換為oldgirl

sed -i 's/oldboy/oldgirl/g'  `find /oldboy -type f -name '*.sh'`

find /oldboy -type f -name '*.sh'|xargs sed -i 's/oldboy/oldgirl/g'

find /oldboy -type f -name '*.sh' -exec sed -i 's/oldboy/oldgirl/g' {} \;

 

  13、已知/tmp目錄下已經存在test.txt文件,如何將/mnt/test.txt拷貝到/tmp下覆蓋原來的test.txt文件並且系統不提示

\cp /mnt/test.txt  /tmp
/bin/cp  /mnt/test.txt  /tmp
unalias cp;cp  /mnt/test.txt  /tmp

 

  14、創建目錄/data/oldboy,並在該目錄下創建文件oldboy.txt,然后在文件中寫入內容"inet addr:10.0.0.8 Bcast:10.0.0.255 Mask:255.255.255.0"

mkdir -p /data/oldboy
touch /data/oldboy/oldboy.txt
echo "inet addr:10.0.0.8 Bcast:10.0.0.255 Mask:255.255.255.0" >/data/oldboy/oldboy.txt


mkdir -p /data/oldboy cat >>/data/oldboy/oldboy.txt<<EOF inet addr:10.0.0.8 Bcast:10.0.0.255 Mask:255.255.255.0 EOF

mkdir -p /data/oldboy vim /data/oldboy/oldboy.txt inet addr:10.0.0.8 Bcast:10.0.0.255 Mask:255.255.255.0

 

  15、將14題的oldboy.txt文件內容通過命令過濾只輸出如下內容:10.0.0.8  10.0.0.255 255.255.255.0

awk -F "[ :]+" '{print $3,$5,$7}'

 

  16、將題14中的oldboy目錄移動到/tmp目錄下,並將/etc/passwd文件復制到/tmp/oldboy下

mv /data/oldboy /tmp
cp /etc/passwd /tmp/oldboy

 

  17、在題16基礎上使用awk取passwd文件的第10行到20行的第三列重定向到/tmp/oldboy/test.txt文件里

awk -F ":" 'NR>9&&NR<21{print $3}' /tmp/oldboy/passwd >>/tmp/oldboy/test.txt

 

  18、在題16的基礎上要求用命令rm刪除文件時提示如下禁止使用rm的提示:Do not use rm command.,並使該效果永久生效

alias rm='echo Do not use rm command.'
echo "alias rm='echo Do not use rm command.'" >>/etc/bashrc
echo "alias rm='echo Do not use rm command.'" >>/etc/profile

 

  19、在題16的基礎上,刪除/tmp/oldboy/下除passwd以外的其他文件

find /tmp/oldboy -type f -! -name 'passwd' -delete
find /tmp/oldboy -type f -! -name 'passwd'|xargs rm -f
cd /tmp/oldboy;ls|grep -v 'passwd'|xargs rm -f

 

  20、在題16的基礎上,打印passwd文件的第2-5行

head -5 /etc/passwd|tail -4
grep 2 -A 3 /etc/passwd
sed -n '2,5'p /etc/passwd
awk 'NR>1&&NR<6' /etc/passwd

 

  21、在題16的基礎上,使用命令調換passwd文件里root和/bin/bash的位置,即將所有的第一列和最后一列位置調換

awk -F ":" '{print $7":"$2":"$3":"$4":"$5":"$6":"$1}' /tmp/oldboy/passwd

 

  22、把/data目錄及其子目錄下所有以擴展名.txt結尾的文件中包含oldgirl的字符串全部替換為oldboy

sed -i 's/oldgirl/oldboy/g' `find /data -type f -name '*.txt'`
find /data -type f -name '*.txt' -exec sed -i 's/oldgirl/oldboy/g' {} \;
find /data -type f -name '*.txt' |xargs sed -i 's/oldgirl/oldboy/g'

 

  23、查找/oldboy下所有7天以前以log結尾的大於1M的文件移動到/tmp下

mv `find /oldboy -mtime +7 -size +1M -name '*log'` /tmp 
find /oldboy -mtime +7 -size +1M -name '*log' -exec mv {} /tmp \;

 

  24、輸出/oldboy目錄下的所有一級子目錄

ls -l /oldboy|grep '^d'
ls -F /oldboy|grep '/$'
find /oldboy -maxdepth 1 -type d -! -name '.'
ls -l /oldboy|awk '{if($2>1) print $0}'
tree -dL 1 /oldboy
ls -ld */
ls -l|awk '/^d/'

 

  25、從/oldboy目錄切換到/tmp目錄后如何在不輸入路徑的情況下快速回到/oldboy目錄下

cd -

 

  26、一個目錄中有超多文件,如何快速查看最近更新的文件

ls -lt  /

 

  27、給目錄/application/apache2.2.17做一個軟連接到/application/apache

ln -s /application/apache2.2.17 /application/apache

 

  28、刪除/app/logs目錄下七天以前的日志文件

find /app/logs -type f -mtime +7 -exec rm -f {} \;
find /app/logs -type f -mtime +7 |xargs rm -f
find /app/logs -type f -mtime +7 -delete
rm -f `find /app/logs -type f -mtime +7`

 

  29、實時查看系統日志/var/log/messages的更新

tail -f /var/log/messages

 

  30、打印配置文件nginx.conf的內容及行號

cat -n nginx.conf
nl nginx.conf
grep -n . nginx.conf
less -N nginx.conf
vi 文件    然后:set nu
awk '{print NR,$0}' nginx.conf
sed = nginx.conf|sed 'N;s/\n//'   sed =  顯示行號

 

  31、使NFS的自啟動級別僅為3

chkconfig nfs off;chkconfig --level 3 nfs on
chkconfig --level 245 nfs off;chkconfig --level 3 nfs on

 

  32、/etc目錄為Linux系統默認配置文件及服務啟動命令目錄

  a 打包及壓縮整個/etc目錄

tar -zcvf  etc.tar.gz /etc

  b 除/etc/services文件外,打包及壓縮整個/etc目錄

tar --exclude /etc/services -zcvf etc.tar.gz /etc

  c 把a的壓縮包解壓到/tmp目錄下

tar -zxvf etc.tar.gz -C /tmp

 

  33、已知oldboy.txt文件內容如下:I am oldboy,myqq is 49000448,請從文件中過濾出'oldboy'和'49000448',如果要過濾出'oldboy,4900448'又該使用什么命令

awk -F "[ ,]+" '{print $3,$6}'
awk -F "[ ,]+" '{print $3","$6}'

 

  34、如何查看/etc/services文件一共多少行

wc -l /etc/services
cat -n nginx.conf|tail -1
nl nginx.conf|tail -1
grep -n . nginx.conf|tail -1
less -N nginx.conf|tail -1
vi 文件    然后:set nu然后shift g
awk '{print NR,$0}' nginx.conf|tail -1
sed = nginx.conf|sed 'N;s/\n//'|tail -1

 

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

ls -l /etiantian|cut -c 2-10|tr 'rwx-' '4210'|awk -F "" '{print $1+$2+$3""$4+$5+$6""$7+$8+$9}'
stat -c %a /etiantian
stat /etiantian|awk -F "[0/]" 'NR==4 {print $2}'
stat /etiantian|sed -nr 's/^.*\(0(.*)/.*$/\1/gp'

 

  36、Linux下通過mkdir命令創建一個新目錄/oldboy/ett,它的硬鏈接數是多少,為什么?如果在/oldboy/ett下面在創建目錄test。此時/oldboy/ett目錄的硬鏈接書是多少,為什么

創建/oldboy/ett目錄時,ett目錄的硬鏈接數為2,因為每個目錄都有一個硬鏈接.,且目錄ett與。互為硬鏈接,所以ett的硬鏈接數為2.
在ett目錄下創建目錄test,此時ett目錄的硬鏈接數為3,因為每個目錄都有上一級目錄的硬鏈接..,所以ett目錄的硬鏈接數為3

 

 

  37、請使用命令取出Linux中eth0的IP地址

ifconfig eth0|awk -F '[ :]+' 'NR==2 {print $4}'
ifconfig eth0|sed -nr 's/.*dr:(.*) B.*$/\1/gp'
grep IPADDR /etc/sysconfig/network-scripts/ifcfg-eth0|cut -d = -f 2

 

  38、請給出默認情況eth0網卡配置文件的路徑以及DNS配置文件的路徑

網卡配置文件路徑:/etc/sysconfig/network-scripts/ifcfg-eth0
DNS配置文件路徑:/etc/resolve.conf

 

 

  39、查找當前目錄下所有文件,並把文件中的www.eiantian.org字符串替換成www.oldboy.me

find  .  -type f |sed  's/^www.etiantian.org$/www.oldboy.me/g'
finnd . -type f -exec sed 's/^www.etiantian.org$/www.oldboy.me/g'  {} \;
sed 's/^www.etiantian.org$/www.oldboy.me/g'  $(find . -type f)

 

 

  40、如何賦予oldboy.txt文件-rw-r--r-x權限

chmod  645  oldboy.txt
chmod  u=rw,g=r,o=rx

 

 

  41、執行下面命令時發現提示需要輸入密碼,請問提示需要輸入的密碼是哪個用戶的密碼 sudo su - oldboy

需要輸入當前用戶密碼

 

  42、請問在一個命令上加什么參數可以實現下面命令的內容在同一行輸出  echo 'oldboy';echo 'oldboy'

echo -n 'oldboy';echo 'oldboy'

 

  43、請給出如下格式的date命令,日期顯示為11-02-26,星期六顯示為數字6

date +%Y-%m-%d(date +%F);date +%w

 

  44、當從root用戶切換到普通用戶oldboy時,執行ifconfig會提示,請問原因時什么,如何解決

因為CentOS5中ifconfig命令是超級用戶的管理命令,其命令路徑/sbin不在普通用戶的全局環境變量中
解決辦法
1、執行絕對路徑
2、將/sbin添加到環境變量中
3、將添加環境變量的命令寫入.bash_profile文件

 

  45、打印三天前的日期

date +%F -d '-3day'

 

  46、已知/oldboy/test.txt文件內容如下,如何在命令行去掉文件中的空行

  oldboy

  xizi

  xiaochao

sed  -i  '/^$/d'  /oldboy/test.txt
grep -v '^$' /oldboy/test.txt

 

 

  47、已知/oldboy/ett.txt文件內容如下,使用grep正則匹配過濾出前兩行內容

  oldboy
  olldboooy
  test

grep '^ol.*' /oldboy/ett.txt
grep '.*y$'

 

 

  48、如何快速查到ifconfig的全路徑,給出命令

which  ls
whereis -b  ls
locate  ls
find  /  -type f  -name 'ls'

 

  49、每周日上午9:30來老男孩Linux培訓上課(用/oldboy.sh代替),用定時任務表示

#每周日上午9:30來老男孩Linux培訓上課 by oldboy 2011-6-23
30 09 * * 0 /bin/sh /oldboy.sh >/dev/null 2>&1

 

  50、請給出當前哪些用戶在線的Linux命令

who
w 
last
lastlog
users
fingers

 

  51、公司已開發人員申請對某以服務器10天的普通用戶權限,請問你如何操作只給此用戶10天的使用期限

useradd oldboy -e 01/28/12 用戶在2011年1月28日過期
usermod -e 01/28/12 oldboy
chage -E 01/28/12 oldboy

 

  52、請給出正確的關機與重啟命令

關機:
shutdown -h now
halt
power off
init 0

重啟:
shutdown  -r now
init 6
reboot

 

  53、在每周6的凌晨3:15執行/home/shell/collect.pl,並將標准輸出和標准錯誤輸出/dev/null設備,請寫出crontab中的語句

15 3 * * 6 /usr/bin/perl /home/shell/collect.pl >/dev/null 2>&1

 

  54、crontab在11月份內,每天早上6點到12點中,每隔2小時執行一次/usr/bin/httpd.sh,怎么實現

00 6-12/2 * 11 * /bin/sh /usr/bin/httpd.sh>/dev/null 2>&1

 

  55、已知服務器上開啟了tcp端口333,如何查看該端口上運行的服務

1、lsof -i tcp:333
2、netstat -antupl|grep :333

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM