1. 程式人生 > >Linux 企業面試題之一

Linux 企業面試題之一

一、如何過濾出當前目錄下oldboy中的所有一級目錄(提示:不包含oldboy目錄下面目錄的子目錄及隱藏目錄,即只能是一級目錄)

這裡寫圖片描述

1、ls -p:只給目錄加斜線

[[email protected] data]# ls

1.txt 2.txt 3.txt 4444 test test1 test2

[[email protected] data]# ls -p --color | grep '/$'

4444

test1

test2

2、ls -F:給不同的目錄加不同的符號

[[email protected] data]# ls -F --color | grep '/$'

4444

test1

test2

3、用find來查詢

[[email protected] data]# find ./ -type d

./

./4444

./test1

./test1/test3

./test1/test3/test4

./test2

發現其又往下級目錄查詢,故要加個-maxdepth引數,注意此引數要加在最前面。

[[email protected] data]# find ./ -type d

./

./4444

./test1

./test1/test3

./test1/test3/test4

./test2

[[email protected] data]# find ./ -maxdepth 1 -type d

./

./4444

./test1

./test2

PS:./和./*的區別:

./:當前目錄下的內容包括./本身

./*:當前目錄下的所有內容不包括./本身

[[email protected] data]# find ./ -maxdepth 1 -type d

./

./4444

./test1

./test2

[[email protected] data]# find ./* -maxdepth 1 -type d

./4444

./test1

./test1/test3

./test2

但是要是用./*會把深度的目錄也匹配出來,故要是相符合題意,則還是要用./

[[email protected] data]# find ./ -maxdepth 1 -type d ! -name '.'

./4444

./test1

./test2

4、awk來實現

[[email protected] data]# ls -l | awk '{if($2>1) print $0}'

total 28

drwxr-xr-x. 2 root root 4096 Nov 19 07:14 4444

drwxr-xr-x. 3 root root 4096 Nov 19 07:18 test1

drwxr-xr-x. 2 root root 4096 Nov 19 07:13 test2

5、其它方法,瞭解即可

[[email protected] data]# ls -dl */

drwxr-xr-x. 2 root root 4096 Nov 19 07:14 4444/

drwxr-xr-x. 3 root root 4096 Nov 19 07:18 test1/

drwxr-xr-x. 2 root root 4096 Nov 19 07:13 test2/

sed

[[email protected] data]# ls -l | sed -n '/^d/p'

drwxr-xr-x. 2 root root 4096 Nov 19 07:14 4444

drwxr-xr-x. 3 root root 4096 Nov 19 07:18 test1

drwxr-xr-x. 2 root root 4096 Nov 19 07:13 test2

[[email protected] data]# ls -F | sed -n '/\/$/p'

4444/

test1/

test2/

awk

[[email protected] data]# ls -l | awk '/^d/'

drwxr-xr-x. 2 root root 4096 Nov 19 07:14 4444

drwxr-xr-x. 3 root root 4096 Nov 19 07:18 test1

drwxr-xr-x. 2 root root 4096 Nov 19 07:13 test2

[root\@oldboy data]\# ls -F | awk '/\/$/'

4444/

test1/

test2/

二、假設所在當前目錄為/oldboy,若切換到/tmp目錄下後想要回到原來的/oldboy目錄,但不能使用cd /oldboy,如何操作?

[[email protected] oldboy]# pwd

oldboy

[[email protected] oldboy]# cd /tmp

[[email protected] tmp]# cd -

/oldboy

[[email protected] oldboy]# pwd

/oldboy

cd - 的原理

#相當於有個跟屁蟲一直記錄你上一個目錄的位置資訊,即環境變數,當輸入cd -就會直接切入到\$OLDPWD所指定的目錄下了。

[[email protected] oldboy]# env | grep -i oldpwd

OLDPWD=/tmp

[[email protected] oldboy]# cd /tmp

[[email protected] tmp]\# env | grep -i oldpwd

OLDPWD=/oldboy

cd的一些用法

[[email protected] tmp]# cd .

[[email protected] tmp]# cd ..

[[email protected] /]# cd ~

[[email protected] ~]# cd -

/

[[email protected] /]# cd

[[email protected] ~]# cd /etc/sysconfig/

[[email protected] sysconfig]# cd ../../

[[email protected] /]# pwd

/

三、一個目錄中有很多檔案(ls檢視時好多屏),想要最快速檢視到最近更新的檔案,如何做?

#用ls -lrt命令,-r當排序時,翻轉排序,-t按修改時間排序,故有必要的話需要修改時間

[[email protected] ~]# cd /etc

[[email protected] etc]# touch test.txt

[[email protected] etc]# date -s '20171201 21:42'

Fri Dec 1 21:42:00 EST 2017

[[email protected] etc]# date

Fri Dec 1 21:42:02 EST 2017

[[email protected] etc]# echo 123 > test.txt

[[email protected] etc]# ls -lrt

四、已知apache 服務的訪問日誌按天記錄在伺服器本地目錄/app/logs 下,由於磁碟空間緊張,現在要求只能保留最近7天訪問日誌!請問如何解決? 請給出解決辦法或配置或處理命令。

解答: apache 日誌測試資料: 企業面試題

(提示:可以從apache 服務配置上著手,也可以從生成出來的日誌上著手。)

這裡寫圖片描述

模擬資料:

mkdir -p /app/logs

cd /app/logs

for n in `seq 14` ;

do

date -s "2017/12/$n" ;

touch access_www_$(date +%F).log ;

done

date -s "2017/12/15"

實現刪除

法一:

[[email protected] logs]# find /app/logs/ -type f -mtime +7 | xargs rm -f

法二:

[[email protected] logs]# find /app/logs/ -type f mtime +7 -exec rm -f {} \;

法三:

[[email protected] logs]# rm -f `find /app/logs/ -type f -mtime +7`

工作中可以把它做成定時任務,每天或每週定時清理

五、除錯系統伺服器時,希望能實時檢視系統日誌/var/log/messages的更新,如何做?

模擬環境:開啟另一個終端,不斷往/var/log/messages檔案中追加資訊,本地實時檢視

[[email protected] ~]# for n in `seq 100` ; do echo $n >>/var/log/messages ; sleep 1 ; done

法一:

[[email protected] logs]# tail -f /var/log/messages

23

24

25

26

27

28

29

30

31

32

法二:

[[email protected] logs]# tailf /var/log/messages

91

92

93

94

95

96

97

98

99

100

法三:-F有個重試的功能,就是檔案不存在了,會繼續重試

[[email protected] logs]# tail -F /var/log/messages

98

99

100

1

2

3

4

5

6

7

8

六、列印nginx.conf 配置檔案中的行號

模擬環境,由於原nginx.conf配置檔案中內容過多,這裡就自己建立一個nginx.conf檔案

[[email protected] oldboy]# echo stu{01..10} | xargs -n 1 > nginx.xonf

法一:nl nginx.conf(nl 顯示檔案行號,空行不計數)

[[email protected] oldboy]# nl nginx.conf

1 stu01

2 stu02

3 stu03

4 stu04

5 stu05

6 stu06

7 stu07

8 stu08

9 stu09

10 stu10

法二:cat -n nginx.conf

[[email protected] oldboy]# cat -n nginx.conf

1 stu01

2 stu02

3 stu03

4 stu04

5 stu05

6 stu06

7 stu07

8 stu08

9 stu09

10 stu10

法三:grep -n “.” nginx.conf 不匹配空白行

grep -n ".*" nginx.conf 可以把空白行也給匹配出來

[[email protected] oldboy]# grep -n . nginx.conf

1:stu01

2:stu02

3:stu03

4:stu04

5:stu05

6:stu06

7:stu07

8:stu08

9:stu09

10:stu10

法四:vim末行模式:set nu

法五:awk ‘{print NR,$0}’ nginx.conf

[[email protected] oldboy]# awk '{print NR,$0}' nginx.conf

1 stu01

2 stu02

3 stu03

4 stu04

5 stu05

6 stu06

7 stu07

8 stu08

9 stu09

10 stu10

法六:sed = nginx.conf | sed ‘N;s/\n/ /’

[[email protected] oldboy]# sed = nginx.conf| sed 'N;s/\n/ /'

1 stu01

2 stu02

3 stu03

4 stu04

5 stu05

6 stu06

7 stu07

8 stu08

9 stu09

10 stu10

法七:less -N nginx.conf

[[email protected] oldboy]# less -N nginx.conf

七、如何解決中文亂碼問題?

法一:臨時生效

[[email protected] oldboy]# echo $LANG

en_US.UTF-8

[[email protected] oldboy]# export LANG="zh_CN.UTF-8" #此法執行後,僅在當前視窗生效

[[email protected] oldboy]# echo $LANG

zh_CN.UTF-8

#提示:要注意字符集的大小寫

法二:永久生效

[[email protected] oldboy]# echo 'LANG="zh_CN.UTF-8"' >/etc/sysconfig/i18n

[[email protected] oldboy]# source /etc/sysconfig/i18n #生效配置檔案

八、如何優化linux系統?

01) 不用root,新增普通使用者,通過sudo 授權管理。

02) 更改預設的遠端連線SSH 服務埠及禁止root 使用者遠端連線。

03) 定時自動更新伺服器時間。

04) 配置yum 更新源,從國內更新源下載安裝rpm 包。

05) 關閉selinux 及iptables (iptables 工作場景如果有wan ip一般要開啟,高併發除外)。

06) 調整檔案描述符的數量,程序及檔案的開啟都會消耗檔案描述符。

07) 定時自動清理/var/spool/clientmquene/ 目錄垃圾檔案,防止inodes節點被佔滿(c6.4 預設沒有sendmail,因此,可以不配)。

08) 精簡開機自啟動服務只開啟下面幾個服務(crond,sshd,network,rsyslog,sysstat
(c5.8 syslog))。著重說一下sysstat,它是一個軟體包,下面有幾個比較重要的命令,如iostat(檢視CPU使用率及硬碟吞吐效率的資料)、mpstat(提供與單個或多個處理器相關的資料)、sar(負責收集、報告並存儲系統活躍的資訊)最好只開啟這幾個服務,後續需要什麼服務再開啟什麼服務

ntsysv可以選擇要開啟的服務

新裝的系統預設在開機後會有好多服務開啟,如何把這些服務給關閉掉,要是一個一個關閉效率太低了,這時可以先把我們要開啟的服務過濾出來,而後關閉其它服務

[[email protected] init.d]# chkconfig --list | grep "3:on" | egrep -v "crond|sshd|sysstat|rsyslog|network" | awk '{print "chkconfig",$1,"off"}'

chkconfig abrt-ccpp off

chkconfig abrtd off

chkconfig acpid off

chkconfig atd off

chkconfig auditd off

chkconfig blk-availability off

chkconfig cpuspeed off

chkconfig haldaemon off

chkconfig ip6tables off

chkconfig iptables off

chkconfig irqbalance off

chkconfig kdump off

chkconfig lvm2-monitor off

chkconfig mdmonitor off

chkconfig messagebus off

chkconfig netfs off

chkconfig postfix off

chkconfig rdma off

chkconfig udev-post off

#上面打印出來我們要執行的所有命令後,給bash執行

[[email protected] init.d]# chkconfig --list | grep "3:on" | egrep -v "crond|sshd|sysstat|rsyslog|network" | awk '{print "chkconfig",$1,"off"}' | bash

[[email protected] init.d]# chkconfig --list | grep "3:on"

crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off

network 0:off 1:off 2:on 3:on 4:on 5:on 6:off

rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off

sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

sysstat 0:off 1:on 2:on 3:on 4:on 5:on 6:off

# 也可以先把所有的服務給關閉,而後再開啟我們所需要的服務即可

[[email protected] ~]# chkconfig --list | grep "3:on" | awk '{print "chkconfig",$1,"off"}' | bash

[[email protected] ~]# chkconfig --list | grep "3:off" | egrep "crond|sshd|sysstat|rsyslog|network" |awk '{print "chkconfig",$1,"on"}'| bash

09) linux 核心引數優化/etc/sysct1.conf,執行sysctl-p 生效。

10) 更改字符集,支援中文,但建議還是用英文字符集,防止亂碼問題,不要使用中文。

11) 鎖定關鍵系統檔案。

chattr +i /etc/passwd /etc/shadow /etc/group/etc/gshadow /etc/inittab

處理以上內容後把chattr,lsattr改名為oldboy,這樣就安全多了。

12) 清空/etc/issue ,去除系統及核心版本登入前的螢幕提示

13) 清除無用的預設系統賬戶或組(非必須)

九、如何檢視/etc/services檔案有多少行

[[email protected] oldboy]# wc -l /etc/services

10774 /etc/services

#提示:wc -l總行數 -L列印檔案中最長行的字元數

工作中wc的使用

[[email protected] oldboy]# ps -ef|grep "sshd"|grep -v "grep"

root 1560 1 0 Dec13 ? 00:00:00 /usr/sbin/sshd

root 6120 1560 0 Dec14 ? 00:00:00 sshd: [email protected]/1

root 6378 1560 0 00:34 ? 00:00:00 sshd: [email protected]/0

[[email protected] oldboy]# ps -ef|grep "sshd"|grep -v "grep"|wc -l

3

#生產場景中會統計這個數字,若是大於等於1就證明這個服務已經啟動

十、裝完系統後,希望讓網路檔案共享服務NFS,僅在3 級別上開機自啟動,該如何做?

解答:什麼是開機自啟動,防毒軟體我們都知道吧,例如:360等每次開機都會自動起來對吧,我們就需要360這樣,在linux下軟體服務隨系統啟動而啟動的配置。

法一:把具體服務追加在配置檔案/etc/rc.local中

[[email protected] oldboy]# echo " /etc/init.d/sshd start " >> /etc/rc.local

法二:chkconfig

chkconfig --list :檢視所有服務所有級別的啟動狀態

chkconfig --list sshd:檢視指定服務的啟動狀態

chkconfig --level n [on|off]:指定級別開啟或關閉,若不指定級別,預設是2,3,4,5

chkconfig --level 345 on

chkconfig --level 5 off

原理:

[[email protected] ~]# chkconfig --list sshd

sshd 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉

[[email protected] ~]# ll /etc/rc.d/rc3.d/|grep sshd

lrwxrwxrwx. 1 root root 14 11月 16 11:30 S55sshd -> ../init.d/sshd

[[email protected] ~]# chkconfig --level 3 sshd off

[[email protected] ~]# ll /etc/rc.d/rc3.d/|grep sshd

lrwxrwxrwx. 1 root root 14 12月 15 05:56 K25sshd -> ../init.d/sshd

#注意,當chkconfig指定的執行界別開機啟動,那麼在相對應級別的指令碼中會找到以S開頭的服務檔案,當關閉其開機啟動,那麼在相對應的指令碼中就會發現以K開頭的服務檔案,即手動建立刪除也可以,需要指定連結檔案

#預設chkconfig啟動是2345,啟動S55,停止為K25這些都是在/etc/init.d/sshd配置檔案中寫的

[[email protected] ~]# head /etc/init.d/sshd

#!/bin/bash

#

# sshd Start up the OpenSSH server daemon

#

# chkconfig: 2345 55 25

# description:

*****手動建立一個開機自啟動的oldboyd服務

#首先要先在/etc/init.d/目錄下建立對應的服務檔案,oldboyd

[[email protected] ~]# vim /etc/init.d/oldboyd

[[email protected] ~]# cat /etc/init.d/oldboyd

#chkconfig: 35 57 27

#description: oldboyd by rsq

echo "This is my service!"

#新增oldboyd服務

[[email protected] ~]# chkconfig --add oldboyd

[[email protected] ~]# chkconfig --list oldboyd #可以看到3,5級別都是處於啟動狀態

oldboyd 0:關閉 1:關閉 2:關閉 3:啟用 4:關閉 5:啟用 6:關閉

[[email protected] ~]# ll /etc/rc.d/rc3.d/|grep oldboyd

lrwxrwxrwx. 1 root root 17 12月 15 06:31 S57oldboyd -> ../init.d/oldboyd

[[email protected] ~]# chkconfig oldboyd off

[[email protected] ~]# ll /etc/rc.d/rc3.d/|grep oldboyd

lrwxrwxrwx. 1 root root 17 12月 15 06:32 K27oldboyd -> ../init.d/oldboyd

[[email protected] ~]# ll /etc/rc.d/rc5.d/|grep oldboyd

lrwxrwxrwx. 1 root root 17 12月 15 06:32 K27oldboyd -> ../init.d/oldboyd

十一、描述Linux系統的啟動過程?

  1. 開機BIOS自檢
    檢查硬體是否正常

  2. MBR引導
    硬碟0柱面0磁軌1扇區的前446byte(一扇區共512byte,沒有讀取完畢)後邊還有66位元組,其中64位元組作為分割槽表使用,即4個分割槽表(每個分割槽表16位元組),還有2位元組(55AA標識)作為分割槽的結束

  3. grub引導選單
    cat /etc/grub.conf

  4. 載入核心kernel

  5. 載入init程序,程序號為1,為第一個啟動的程序。會讀取/etc/inittab檔案–>執行/etc/rc.d/rc.sysinit指令碼(一些基本的設定)–>執行/etc/rc.d/rc指令碼(/etc/rc*.d/ ,會選擇對應的執行級別而後啟動)–>啟動mingetty程序

相關推薦

Linux 企業試題之一

一、如何過濾出當前目錄下oldboy中的所有一級目錄(提示:不包含oldboy目錄下面目錄的子目錄及隱藏目錄,即只能是一級目錄) 1、ls -p:只給目錄加斜線 [[email protected] data]# ls 1.txt 2

Linux企業試題

linux企業面試題已知下面的字符串是通過RANDOM隨機數變量md5 sum|sut -c 1-8 截取後的結果請破解這些字符串對應的md5sum前的RANDOM對應數字?2102929900205d1ca3da16771f6d12dd890684d答案:#!/bin/bash mima=( 2102929

(轉)linux運維必會MySQL企業試題

要求 延遲 man 線程 binlog日誌 生產 mil mysqld 表達 linux運維必會MySQL企業面試題 老男孩教育運維班全體學員MySQL必會企業面試題最實戰、最細致、最落地的運維實訓基地,老男孩教育連續多年國內平均就業工資最高! 數據

Linux運維必會的mysql企業試題大全

計劃 導致 存儲 提供服務 linux運維 out apr 請求 代表性 (1)基礎筆試命令考察 1.開啟MySQL服務/etc/init.d/mysqld startservice mysqld startsystemctl start mysqld 2.檢測端口是否

Linux運維必會的MySQL企業試題大全 推薦

混合模式 裏的 general inux運維 active 之前 方法 一周 手機 Linux運維必會的MySQL企業面試題大全 推薦 (1)基礎筆試命令考察1.開啟MySQL服務/etc/init.d/mysqld

linux基礎命令之企業試題

con test 不包含 模擬 cto for oca 顏色 mtime 1.如何過濾出已知當前目錄下linzhongniao中的所有一級目錄(提示:不包含linzhongniao目錄下面目錄的子目錄及隱藏目錄,即只能是一級目錄)創建模擬數據: [root@linzhong

php試題,各大企業常見的php試題之一

1.在PHP中,當前指令碼的名稱(不包括路徑和查詢字串)記錄在預定義變數(1)中;而連結到當前頁面的URL記錄在預定義變數(2)中。 答:echo $_SERVER['PHP_SELF']; echo $_SERVER["HTTP_REFERER"]; 2.執行程式段<

2017年最新企業試題之shell(一)

2017年最新企業面試題之shell2017年最新企業面試題之shell(一)**********************************************企業Shell面試題1:批量生成隨機字符文件名案例 ********************************************

2017年最新企業試題之shell(三)

2017年最新企業面試題之shell(三)2017年最新企業面試題之shell(三)練習題1:寫一個shell腳本,類似於日誌切割,系統有個logrotate程序,可以完成歸檔。但現在我們要自己寫一個shell腳本實現歸檔。舉例: 假如服務的輸出日誌是1.log,我要求每天歸檔一個,1.log第二天就變成1.

Linux驅動試題總結

失敗 產生 ip協議 函數 原子 名稱 有助於 方式 單處理器 1、 Linux設備中字符設備與塊設備有什麽主要的區別?請分別列舉一些實際的設備說出它們是屬於哪一類設備。 字符設備:字符設備是個能夠像字節流(類似文件)一樣被訪問的設備,由字符設備驅動程序來實現這種特

Linux常用試題

運維1.面試技巧: 自我介紹:多準備,背下來。要抑揚頓挫,自我介紹之後不要停留,直接切入在公司的工作情況,講解架構。把工作中的問題說出來,以及解決方案。 比如面試的時候別人問大數據,雲計算等,這屬於開發。可以回答說接觸不太多,但是這個東西,咱公司有機會我願意去研究去花時間學習。 盡量拿到面試官的聯

企業試題

企業面試 ase section ber rep nta all rowset resources 1、按單詞出現頻率降序排序!2、按字母出現頻率降序排序!the squid project provides a number of resources toassist u

深圳市奔凱安全技術股份有限公司試題之一:關於資料庫查詢,根據年份查詢每個季度的銷售額

題目:根據年份查詢每個季度的銷售額,表的結構大概如下:(year是年,month是季度,sale是銷售量,表 名 是 sales) select * from sales; 他要求寫sql語句,顯示如下圖:(一季度就是month=1,二季度就是month=2......)

檢測各個字母出現的次數,以及出現最多次數的是哪個字母(遇到的試題之一

給出一個字串,要求檢測各個字母出現的次數,以及出現最多次數的是哪個字母 var str = “communicaaaaaaaaaaaaationnnnnnnnnnnnn” 思路: 1、首先需要遍歷這個字串中的每一項 2、考慮到要將每個字母出現的次數都打印出來,並且得到出

JAVA企業試題精選 Hibernate 11-20

4.11.簡要描述對物件關係對映(Object-Relational Mapping,簡稱ORM)的理解.並說明經典實現框架. 參考答案:   物件關係對映(Object-Relational Mapping,簡稱ORM)是一種為了解決面向物件與面向關係資料

JAVA企業試題精選 Hibernate 1-10

4.Hibernate 4.1.Hibernate有什麼缺點? 參考答案:   1.HQL最終還是要轉換為JDBC,效率降低;   2.使用資料庫特性的語句,將很難調優.Hibernate對JDBC封裝的國語厲害,所以就失去了對SQL的控制;  

JAVA企業試題精選 Struts 11-18

3.11.請簡述Struts2中各元件的作用及呼叫順序 參考答案:   Struts2有6大核心自檢,分別為前端控制器filter,業務控制器Action,值物件ValueStack,攔截器Interceptor,輸出元件Result,Struts2標籤.

JAVA企業試題精選 Struts 1-10

3.Struts 3.1.為什麼要用Struts2? 參考答案:   主流的開發技術,大多數公司在使用,Struts是基於MVC模式開發的,MVC結構是一個優秀的設計思想,可以提高程式結構的靈活性,便於日後的維護和擴充套件. 3.2.簡述St

JAVA企業試題精選 MyBatis 1-4

2.MyBatis 2.1.什麼是MyBatis? 參考答案:   MyBatis最早源自Apache基金會的一個開源專案iBatis,2010年這個專案由Apache software foundation遷移到了google code,並且改名為

JAVA企業試題精選 Spring 11-14

1.11.Spring提倡面向介面程式設計,請講一下你對它的理解,它有什麼好處 參考答案:   在一個面向物件的系統中,系統的各個功能是由許許多多的不同物件協作完成的.在這種情況下,各個物件內部是如何實現自己的,對系統設計人員來講就不那麼重要了;而各個物件之