主頁 > 軟體設計 > Shell面試題

Shell面試題

2021-10-06 07:53:33 軟體設計

目錄

1.shell中定義區域變數

2.在執行腳本時bash和source的區別

3.哪些方式可以將標準輸出和錯誤輸出重定向到檔案?

4.正則運算式符號*、+、?、[]、[^]、{n} 分別代表什么含義?

5.日志切割腳本

6.利用shell開發rsync服務啟動、停止腳本,并通過chkconfifig 進行開關機管理

7.撰寫一個shell腳本,添加100個新用戶,并設定密碼

8.取出某個檔案的第三列,以冒號分割

9.查看access.log檔案中某個時間段的日志

10.查看 Apache并發請求數及其TCP連接狀態

11.通過APACHE訪問日志access.log統計IP和每個地址訪問的次數,列出訪問量前10名的IP地址,寫出具體命令

12.撰寫腳本實作將/usr/local/test目錄下大于100K檔案,將它拷貝到/tmp目錄下

13.如何獲取一個檔案每一行第三個元素?

14.使用awk統計httpd訪問日志中每個客戶端IP出現的次數?

15.撰寫腳本,用戶輸入密碼,腳本判斷密碼是否正確,輸入正確則提示正確,連續輸入錯誤密碼3次,則報警?

16.撰寫腳本,自動生成一個8位隨機密碼

17.統計ip訪問情況,要求分析nginx訪問日志,找出訪問頁面數量在前十位的ip

18.怎么查看當前系統中每個IP的連接數:

19.python多執行緒的局限性

20.python的基本資料型別


1.shell中定義區域變數

定義區域變數可以使用local,多在函式中應用

1)shell中定義的變數都是global的,其作用域從被定義的地方開始,到shell結束或被顯示洗掉的地方為止

2)函式定義的變數是可以被定義成local的,其作用域只限于函式內

2.在執行腳本時bashsource的區別

1、source命令用法:

source 檔案名

作用:在當前bash環境下讀取并執行FileName中的命令,該fifilename檔案可以無"執行權限"

注:該命令通常用命令“.”來替代,

source(或點)命令通常用于重新執行剛修改的初始化檔案,

source命令(從 C Shell 而來)是bash shell的內置命令,

點命令,就是個點符號,(從Bourne Shell而來),

source的程式主體是bash,腳本中的$0變數的值是bash,而且由于作用于當前bash環境,腳本中set的變數將直接起效

2、sh,bash的命令用法:

sh/bash 檔案名

作用:打開一個子shell來讀取并執行FileName中命令,該fifilename檔案可以無"執行權限"

注:運行一個shell腳本時會啟動另一個命令解釋器.

每個shell腳本有效地運行在父shell(parent shell)的一個子行程里.

這個父shell是指在一個控制終端或在一個xterm視窗中給你命令指示符的行程.

shell腳本也可以啟動他自已的子行程.這些子shell(即子行程)使腳本并行地,有效率地地同時運行腳本內的多個子任務. 在ubuntu中sh只是bash的一個鏈接,由于是在子shell中執行,腳本設定的變數不會影響當前shell,

3、./的命令用法:

./檔案名

作用:打開一個子shell來讀取并執行FileName中命令,該fifilename檔案需要"執行權限"

注:運行一個shell腳本時會啟動另一個命令解釋器.

每個shell腳本有效地運行在父shell(parent shell)的一個子行程里.

這個父shell是指在一個控制終端或在一個xterm視窗中給你命令指示符的行程.

shell腳本也可以啟動他自已的子行程.

這些子shell(即子行程)使腳本并行地,有效率地地同時運行腳本內的多個子任務.由于是在子shell中執行,腳本設定的變數不會影響當前shell,

3.哪些方式可以將標準輸出和錯誤輸出重定向到檔案?

命令 &> 檔案名

命令 > 檔案名1 2> 檔案名2

命令 > 檔案名 2>&1

命令 &>> 檔案名命令 >> 檔案名1 2>> 檔案名2

命令 >> 檔案名 2>&1

4.正則運算式符號*+?[][^]{n} 分別代表什么含義?

* 表示匹配的前面的字符出現了任意次(包括0次)

表示匹配的前面的字符出現了至少1次(1次或多次)

? 表示匹配前面的字符出現了0次或1次

[] 表示集合,匹配集合中的任意單個字符

[^] 表示對集合取反

{n} 表示精確匹配前面的字符出現了n次

5.日志切割腳本

[root@localhost ~]# vim /usr/local/nginx/logbak.sh #新建腳本名為

logbak.sh

\#!/bin/bash #解釋器

date=`date +%Y%m%d` #自定義date變數,值等于當前日期

logpath=/usr/local/nginx/logs #自定義logpath變數,值等于

Nginx日志所在路徑

mv $logpath/access.log $logpath/access-$date.log #把當前access日志重命名

mv $logpath/error.log $logpath/error-$date.log #把當前error日志重命名

kill -USR1 $(cat $logpath/nginx.pid) #向nginx主行程發USR1信

號,重新打開生成日志檔案,如不發送USR1,Nginx將會繼續寫入改名之后的日志

接下來把寫好的腳本寫入計劃任務,自動執行,

[root@localhost ~]# crontab -e #打開計劃任務表

01 02 * * 6 /usr/local/nginx/logbak.sh #每周六凌晨2:01運行腳本進行

日志切割

6.利用shell開發rsync服務啟動、停止腳本,并通過chkconfifig 進行開關機管理

[root@localhost ~]# vim RSstart.sh

#!/bin/bash

case "$1" in

start)

rsync --daemon ## 以守護行程的方式傳輸資料

if [ $? -eq 0 ];then

action "rsync is started" /bin/true

else

action "rsync is started" /bin/false

fi ;;

stop)

pkill rsync sleep 2

if [ `ps -ef|grep rsync|grep -v grep |wc -l` -eq 0 ];then

action "rsync is stoped " /bin/true

else

action "rsync is stoped " /bin/false

fi ;;

restart)

pkill rsync sleep 2

if [ `ps -ef|grep rsync|grep -v grep |wc -l` -eq 0 ];then

rsync --daemon

if [ $? -eq 0 ];then

action "rsync is restarted" /bin/true

fi

fi ;;

*)

echo "USAGE :{start|stop|restart}" ;;

esac

配置開關機管理

然后在腳本最前面加上以下內容

\# chkconfig: 2345 21 99

\# description: chkconfig rsync service

具體自己測驗下,也有可能這個啟動,關閉序號有沖突,需要修改

7.撰寫一個shell腳本,添加100個新用戶,并設定密碼

#!/bin/bash

for name in $(cat $1) # 存放用戶的檔案串列

do

useradd $name &> /dev/null

stty -echo

echo "0123456" | passwd --stdin $name

stty echo

echo "$1 用戶創建成功"

done

8.取出某個檔案的第三列,以冒號分割

awk -F ':' '{print $3}' 檔案名 | sort -n | uniq -C

9.查看access.log檔案中某個時間段的日志

sed -n '起始時間 , 結束時間/p' access.log

10.查看 Apache并發請求數及其TCP連接狀態

查看Apache的并發請求數及其TCP連接狀態:

Linux命令:

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

11.通過APACHE訪問日志access.log統計IP和每個地址訪問的次數,列出訪問量前10名的IP地址,寫出具體命令

awk ‘{print $1}’ access.log|uniq -c|sort -rn |head -10

12.撰寫腳本實作將/usr/local/test目錄下大于100K檔案,將它拷貝到/tmp目錄下

[root@localhost ~]# vim test_cp.sh

#!/bin/bash

for file in `ls /usr/local/test`

do

if [ -f $file ];then

if [ `ls -l $file`|awk '{print $5}' -gt 10000];then

mv $file /tmp/

fi

fi

done

13.如何獲取一個檔案每一行第三個元素?

awk '{print $3}' 檔案名

awk支持按列輸出,通過內置變數 2,$3...可以顯示任意列,默認列是一空格或Tab縮進為分隔符,也可以使用-F選項指定其他分隔符

14.使用awk統計httpd訪問日志中每個客戶端IP出現的次數?

awk '{ip[$1]++}END{for(i in ip){print ip[i],i}}' /var/log/httpd/access_log

定義陣列,陣列名為ip,數字下標為日志檔案的第一列(也就是客戶端的IP地址),++目的在于對客戶端進行統計計數,客戶端IP出現一次計數器就加一.END中的指令在讀取完檔案后執行,通過回圈將所有的統計資訊輸出

15.撰寫腳本,用戶輸入密碼,腳本判斷密碼是否正確,輸入正確則提示正確,連續輸入錯誤密碼3,則報警?

[root@test ~]# vim test.sh

#!/bin/bash

init=123456

for i in {1..3}

do

read -p "請輸入密碼:" pass

if [ init ];then

echo "密碼正確"

exit

fi

done

echo "警告:密碼輸入錯誤"

[root@repo ~]# bash test.sh

請輸入密碼:789456

請輸入密碼:4857

請輸入密碼:46584

警告:密碼輸入錯誤

[root@repo ~]# bash test.sh

請輸入密碼:123456

密碼正確

16.撰寫腳本,自動生成一個8位隨機密碼

[root@repo ~]# vim test1.sh#!/bin/bash

str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

pass=""

for i in {1..8}

do

num= {#str}]

tmp=${str:num:1}

pass+=$tmp

done

echo $pass

[root@repo ~]# bash test1.sh

fI55Qcr0

[root@repo ~]# bash test1.sh

iTmEyE9Q

[root@repo ~]# bash test1.sh

wy0PvcHa

[root@repo ~]# bash test1.sh

nk6AC9VT

17.統計ip訪問情況,要求分析nginx訪問日志,找出訪問頁面數量在前十位的ip

cat access.log | awk ‘{print $1}’ | uniq -c | sort -rn | head -10

18.怎么查看當前系統中每個IP的連接數:

# netstat -n | awk '/^tcp/ {print $5}' | awk -F: '{print $1}' | sort | uniq -c| sort –rn

sort命令:進行排序,-r 反向排序 -n 使用純數字進行排序

uniq 將重復的資料僅僅列出一個來顯示,uniq -c,進行計數

awk -F: '{print $1}' 以F 為分界符,取出第一個:之前的資料

19.python多執行緒的局限性

Python代碼的執行由Python虛擬機(解釋器)來控制,Python在設計之初就考慮要在主回圈

中,同時只有一個執行緒在執行,就像單CPU的系統中運行多個行程那樣,記憶體中可以存放多個程式,但任意時刻,只有一個程式在CPU中運行,同樣地,雖然Python解釋器可以運行多個執行緒,只有一個執行緒在解釋器中運行,

對Python虛擬機的訪問由全域解釋器鎖(GIL)來控制,正是這個鎖能保證同時只有一個執行緒在運行,在多執行緒環境中,Python虛擬機按照以下方式執行,

1.設定GIL,

2.切換到一個執行緒去執行,

3.運行,

4.把執行緒設定為睡眠狀態,

5.解鎖GIL,

6.再次重復以上步驟,

20.python的基本資料型別

數字 字串 串列 元組 字典

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/305633.html

標籤:其他

上一篇:監控zabbix面試題

下一篇:九,自寫網關(library-apigateway)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more