1. 程式人生 > >常見面試題整理—Linux系統常用操作

常見面試題整理—Linux系統常用操作

1. crontab的使用

crontab 是用來讓使用者在固定時間或固定間隔執行程式之用,換句話說,也就是類似使用者的時程表。
-u user_a 是指設定指定 user_a 的時程表,這個前提是你必須要有其許可權(比如說是 root)才能夠指定他人的時程表。如果不使用 -u user 的話,就是表示設 定自己的時程表。

基本格式 :
*  *  *  *  *  command
分 時  日  月  周  命令

第1列表示分鐘1~59 每分鐘用或者 /1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要執行的命令

常用命令:
新增任務: crontab -e
檢視任務: crontab -l
刪除任務: crontab-d
使用許可權 : 所有使用者

crontab 每分鐘、每小時、每天、每週、每月、每年定時執行

每五分鐘執行 /5 * * * commond

每小時執行 0 * * * * commond

每天執行 0 0 * * * commond

每週執行 0 0 * * 0 commond

每月執行 0 0 1 * * commond

每年執行 0 0 1 1 * commond

下面通過一些例子直觀學習下:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart 

上面的例子表示每晚的21:30重啟apache。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart 

上面的例子表示每月1、10、22日的4 : 45重啟apache。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart 

上面的例子表示每週六、週日的1 : 10重啟apache。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart 

上面的例子表示在每天18 : 00至23 : 00之間每隔30分鐘重啟apache。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart 

上面的例子表示每星期六的23 : 00 pm重啟apache。

* */1 * * *   /usr/local/etc/rc.d/lighttpd restart 

每一小時重啟apache

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart 

晚上11點到早上7點之間,每隔一小時重啟apache

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart 

每月的4號與每週一到週三的11點重啟apache

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart 

一月一號的4點重啟apache

2.關閉sendmail服務,這裡介紹一種不用關閉sendmail服務的方法

vim /etc/profile
將 unset MAILCHECK 加到檔案最後
source /etc/profile
(但是試過之後沒效果)

3.查詢檔案內容

查詢當前目錄下所有檔案,將含有’test’的檔案列出
grep ‘test’ *

4.檢視硬碟的使用情況及檔案目錄大小命令

檢視檔案系統各個硬碟大小
df -a 列出所有的檔案系統
df -k 以K為單位顯示
df -h 以人性化單位顯示,可以是b,k,m,g,t..

檢視目錄的大小
du -sh dirname
-s 僅顯示總計
-h 以K、M、G為單位,提高資訊的可讀性。KB、MB、GB是以1024為換算單 位, -H以1000為換算單位。

例:du -sh /www
檢視www資料夾大小

5.screen 命令詳解

背景
作為程式設計師一定會用到linux系統,經常開啟多個shell,執行一些需要很長時間才能完成的任務,通常情況下我們都是為每一個這樣的任務開一個終端視窗,必須等待它們執行完畢,在此期間不能關掉視窗,否則這個任務就會被殺掉。
簡介
GNU Screen是一款由GNU計劃開發的用於命令列終端切換的自由軟體。使用者可以通過該軟體同時連線多個本地或遠端的命令列會話,並在其間自由切換。
GNU Screen可以看作是視窗管理器的命令列介面版本。它提供了統一的管理多個會話的介面和相應的功能
常用的screen 命令
screen -S yourname -> 新建一個叫yourname的session
screen -ls -> 列出當前所有的session
screen -r yourname -> 回到yourname這個session
screen -d yourname -> 遠端detach某個session
screen -d -r yourname -> 結束當前session並回到yourname這個session

常用快捷鍵組合
C-a c -> 建立一個新的執行shell的視窗並切換到該視窗
C-a n -> Next,切換到下一個 window
C-a p -> Previous,切換到前一個 window
C-a d -> detach,暫時離開當前session,將目前的 screen session丟到後臺執行,並會回到還沒進 screen 時的狀態,此時在 screen session 裡,每個screen內執行的 process (無論是前臺/後臺)都在繼續執行,即使 logout 也不影響。
exit 關閉當前session

6.伺服器之間複製檔案

scp是securecopy的簡寫,用於在Linux下進行遠端拷貝檔案的命令,和它類似的命令有cp,不過cp只是在本機進行拷貝不能跨伺服器
,而且scp傳輸是加密的,可能會稍微影響一下速度。

一般有6中用法:
1)本地複製遠端檔案(把遠端的檔案複製到本地):
scp [email protected]:/val/test/test.tar.gz /val/test/test.tar.gz

2)遠端複製本地檔案(把本地的檔案複製到遠端主機上):
scp /val/test.tar.gz [email protected]:/val/test.tar.gz

3)本地複製遠端目錄(把遠端的目錄複製到本地;引數 r 遞迴複製):
scp -r [email protected]:/val/test/ /val/test/

4)遠端複製本地目錄(把本地的目錄複製到遠端主機上):
scp -r /val/ [email protected]:/val/

5)本地複製遠端檔案到指定目錄(把遠端的檔案複製到本地):
scp [email protected]:/val/test/test.tar.gz /val/test/

6)遠端複製本地檔案到指定目錄(把本地的檔案複製到遠端主機上):
scp /val/test.tar.gz [email protected]:/val/

7.檢視CPU 機器型號 記憶體等資訊

系統

uname -a # 檢視核心/作業系統/CPU資訊
cat /proc/cpuinfo # 檢視CPU資訊
hostname # 檢視計算機名
env # 檢視環境變數
lsb_release -a #即可列出所有版本資訊
cat /etc/issue #檢視版本資訊

資源

free -h # 檢視記憶體使用量和交換區使用量
df -h # 檢視各分割槽使用情況
du -sh <目錄名> # 檢視指定目錄的大小
grep MemTotal /proc/meminfo # 檢視記憶體總量
grep MemFree /proc/meminfo # 檢視空閒記憶體量
uptime # 檢視系統執行時間、使用者數、負載
cat /proc/loadavg # 檢視系統負載

磁碟和分割槽

mount | column -t # 檢視掛接的分割槽狀態
fdisk -l # 檢視所有分割槽
swapon -s # 檢視所有交換分割槽
hdparm -i /dev/hda # 檢視磁碟引數(僅適用於IDE裝置)
dmesg | grep IDE # 檢視啟動時IDE裝置檢測狀況

網路

ifconfig # 檢視所有網路介面的屬性
iptables -L # 檢視防火牆設定
route -n # 檢視路由表
netstat -lntp # 檢視所有監聽埠
netstat -antp # 檢視所有已經建立的連線
netstat -s # 檢視網路統計資訊

程序

ps -ef # 檢視所有程序
top # 實時顯示程序狀態

使用者

w # 檢視活動使用者
id <使用者名稱> # 檢視指定使用者資訊
last # 檢視使用者登入日誌
cut -d: -f1 /etc/passwd  #系統所有使用者
cut -d: -f1 /etc/group # 檢視系統所有組
crontab -l # 檢視當前使用者的計劃任務使用者

8.關閉防火牆

systemctl stop firewalld.service
關閉開機啟動: systemctl disable firewalld.service
檢視防火牆狀態: systemctl status firewalld.service

9.ssh 遠端登陸

ssh [email protected]

10.主機名相關

檢視: hostnamectl status
修改: hostnamectl set-hostname “storage_node1”

10.掛載硬碟
mount -t ext3 -o rw /dev/sdb1 /newfile #掛載硬碟
-t 跟磁碟格式 可以省略 系統會自動檢測一下
-o 跟掛載方式 rw 可讀可寫
/newfile 這是硬碟分割槽掛載的目錄,可以隨意變換

11.lsof 使用以及修改系統程序開啟的檔案數限制

該命令用於檢視程序或應用程式開啟的檔案描述符資訊
輸出資訊
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
COMMAND:程序的名稱
PID:程序識別符號
USER:程序所有者
FD:檔案描述符,應用程式通過檔案描述符識別該檔案。如cwd、txt等
TYPE:檔案型別,如DIR、REG等
DEVICE:指定磁碟的名稱
SIZE:檔案的大小
NODE:索引節點(檔案在磁碟上的標識)
NAME:開啟檔案的確切名稱

其中FD 列中的檔案描述符cwd 值表示應用程式的當前工作目錄,這是該應用程式啟動的目錄,除非它本身對這個目錄進行更改。
txt 型別的檔案是程式程式碼,如應用程式二進位制檔案本身或共享庫,其次數值表示應用 程式的檔案描述符,這是開啟該檔案
時返回的一個整數。
u 表示該 檔案被開啟並處於讀取/寫入模式,而不是隻讀 ® 或只寫 (w) 模式。同時還有大寫 的W表示該應用程式具有對整個檔案
的寫 鎖。該檔案描述符用於確保每次只能開啟一個應用程式例項。初始開啟每個應用程式時,都具有三個檔案描述符,從 0 到
2, 分別表示標準輸入、輸出和錯誤流。所以大多數應用程式所開啟的檔案的 FD 都是從 3 開始。
與 FD 列相比,Type 列則比較直觀。檔案和目錄分別稱為 REG 和 DIR。而CHR 和 BLK,分別表示字元和塊裝置;
或者 UNIX、FIFO 和 IPv4,分別表示 UNIX 域套接字、先進先出 (FIFO) 佇列和網際協議 (IP) 套接字。

lsof filename 顯示開啟指定檔案的所有程序
lsof -a 表示兩個引數都必須滿足時才顯示結果
lsof -c string 顯示COMMAND列中包含指定字元的程序所有開啟的檔案
lsof -u username 顯示所屬user程序開啟的檔案
lsof -g (-p)gid 顯示歸屬gid的程序情況
lsof +d /DIR/ 顯示目錄下被程序開啟的檔案
lsof +D /DIR/ 同上,但是會搜尋目錄下的所有目錄,時間相對較長
lsof -d FD 顯示指定檔案描述符的程序
lsof -n 不將IP轉換為hostname,預設是不加上-n引數
lsof -i 用以顯示符合條件的程序情況

lsof -p 程序PID 檢視某特定程序開啟的檔案描述符
lsof -a -p PID -d txt 篩選檔案描述符為 txt的記錄 引數 -a(and的意思)表示篩選兩個引數均滿足的記錄
lsof /home/test.py 查詢開啟某個檔案的應用程式
lsof |grep 33872 |wc -l 統計某程序開啟的檔案描述符的數量

檢視本次登陸的session其檔案描述符的限制
ulimit -n
臨時修改檔案描述符的限定,可以通過 ulimit。
ulimit -SHn 2048
永久變更需要編輯 /etc/security/limits.conf 檔案,新增如下兩行:
在/etc/security/limits.conf修改限制的格式如下
domino type item value
引數 描述
domino 是以符號@開頭的使用者名稱或組名,*表示所有使用者
type 設定為hard or soft
item 指定想限制的資源。如cpu,core nproc or maxlogins
value 是相應的
* hard nofile 4096
* soft nofile 4096

儲存退出後重新登入,其最大檔案描述符已經被永久更改了

核心引數對檔案描述符也有限制,如果設定的值大於核心的限制,也是不行的:
查詢file-max的核心引數:
sysctl -a|grep file-max
更改file-max的核心引數:
sysctl -w file-max=65535
Sysctl也是臨時的,要想永久生效,可以通過更改sysctl的檔案,編輯/etc/sysctl.conf檔案,新增或修改以下一行:
fs.file-max=65535
儲存退出後使用sysctl -p 命令使其生效

需要注意的是,檔案描述符的限制,不侷限於這裡描述的這些,還可能和程序的啟動引數、使用者的環境設定有關。當然,如果是程序
BUG造成檔案描述符沒有及時關閉回收,這增大限制也只是治標,根本上還得修復BUG。
此外,lsof會列出系統中所佔用的資源,但是這些資源不一定會佔用開啟的檔案描述符(比如共享記憶體,訊號量,訊息佇列,記憶體對映.等
,雖然佔用了這些資源,但不佔用開啟檔案號),因此有可能出現cat /proc/sys/fs/file-max 的值小於lsof | wc -l。

cat /proc/sys/fs/nr_open
單個程序可分配的最大檔案數
cat /proc/sys/fs/file-max
核心可分配的最大檔案數

所有程序開啟的檔案描述符數不能超過 /proc/sys/fs/file-max
單個程序開啟的檔案描述符數不能超過 user limit中 nofile的 soft limit
nofile的soft limit不能超過其hard limit
nofile的hard limit不能超過/proc/sys/fs/nr_open

12.修改系統時間

Linux時鐘分為系統時鐘(System Clock)和硬體(Real Time Clock,簡稱RTC)時鐘。

系統時鐘是指當前Linux Kernel中的時鐘,而硬體時鐘則是主機板上由電池供電的時鐘,這個硬體時鐘可以在
BIOS中進行設定。當Linux啟動時,硬體時鐘會去讀取系統時鐘的設定,然後系統時鐘就會獨立於硬體運作。
Linux中的所有命令(包括函式)都是採用的系統時鐘設定。在Linux中,用於時鐘檢視和設定的命令主要有date、hwclock。

date –s:按字串方式修改時間
可以只修改日期,不修改時間,輸入:

date -s 2007-08-03

只修改時間,輸入:

date -s 14:15:00

同時修改日期時間,注意要加雙引號,日期與時間之間有一空格,輸入:

date -s   "2007-08-03 14:15:00"

檢視硬體時間
hwclock
設定硬體時間
hwclock -set -date=”07/07/06 10:19” (月/日/年 時:分:秒)
硬體時間和系統時間的同步
按照前面的說法,重新啟動系統,硬體時間會讀取系統時間,實現同步,但是在不重新啟動的時候,需要用hwclock命令實現同步。
硬體時鐘與系統時鐘同步:
hwclock –hctosys (hc代表硬體時間,sys代表系統時間)
系統時鐘和硬體時鐘同步:(讓系統的時間同步到硬體時鐘)
hwclock -w ––systohc

13.壓縮檔案

tar -zcvf /home/sms.tar.gz /sms
tar -zcvf [打包後生成的檔名全路徑] [要打包的目錄]

zip -q -r sms.zip /home/sms -q 表示安靜模式(在壓縮的時候不顯示指令的執行過程) -r表示遞迴
zip [引數] [打包後的檔名] [打包的目錄路徑]

14. 檢視是否安裝某軟體

rpm -qa|grep soft_name

## 15.測試硬碟的IO
硬碟讀取速度
time dd if=/var/test of=/dev/null bs=2k
hdparm -T /dev/sda

硬碟寫入速度
time dd if=/dev/zero of=/test.dbf bs=8k count=300000
(在 根目錄 / 下面會生成臨時檔案,記得刪除)

相關推薦

見面試題整理Linux系統常用操作

1. crontab的使用 crontab 是用來讓使用者在固定時間或固定間隔執行程式之用,換句話說,也就是類似使用者的時程表。 -u user_a 是指設定指定 user_a 的時程表,這個前提是你必須要有其許可權(比如說是 root)才能夠指定他人的

見面試題整理---前端(不論出處)

都在 需要 優先級調度 正則 很難 定時 http http請求 連接 1.瀏覽器渲染頁面的過程 用戶輸入URL地址 瀏覽器解析URL解析出主機名 瀏覽器將主機名轉換成服務器ip地址(瀏覽器先查找本地DNS緩存列表 沒有的話 再向瀏覽器默認的DNS服務器發送查詢請

Vue見面試題整理

一、對於MVVM的理解? MVVM是Model-View-ViewModel的縮寫。 Model:代表資料模型,也可以在Model中定義資料修改和操作的業務邏輯。 View:代表UI元件,它負責將資料模型轉化成UI展現出來。 ViewModel:監聽模型資料的改變

見面試題整理--資料庫篇(每位開發者必備)

  轉載自:https://zhuanlan.zhihu.com/p/23713529        知乎專欄 繼續前面有關於的Python面試的兩篇內容:Python程式碼篇 、Python概念篇 今天說一說資料庫。不管

java虛擬機器見面試題整理

-1.JVM的記憶體模型 1)程式計數器:當前執行緒所執行的位元組碼的行號執行器。再多執行緒上下文切換中將非常有用。 上下文切換:儲存到在載入的過程。可以理解為你看書看到第幾頁以後不看了,然後折了一下作為標誌,下次就從這裡開始看 2)java虛擬機器棧:我們常說的棧就是java虛擬

Java見面試題整理【1】

---------------------  作者:ImportNewXXT0101  來源:CSDN  原文:https://blog.csdn.net/m0_37955444/article/details/78878030  版權宣告:本文為博主原創文章

計算機網路見面試題整理

1、TCP三次握手、四次分手。 TCP三次握手:     假設主機A為客戶端,主機B為伺服器端。 三次握手的過程:主機A向主機B傳送連線請求,主機B對收到的主機A的報文段進行確認,主機A再次對主機B的確認進行確認。 目的:為了防止已經失效的連線請求報文段突然又傳到伺服

SpringMvc 見面試題整理(一)

你對springmvc的介紹? 1. Spring 框架提供的構建web應用的模組 2. 它是基於servlet功能實現的,通過實現Servlet介面的DispatcherServlet來封裝其核

java見面試題整理

ThreadLocal Synchronized實現記憶體共享,ThreadLocal為每個執行緒維護一個本地變數。 採用空間換時間,它用於執行緒間的資料隔離,為每一個使用該變數的執行緒提供一個副本,每個執行緒都可以獨立地改變自己的副本,而不會和其他執行緒的

linux系統常用操作命令

tab鍵自動補全功能 cd /opt 進入/opt目錄,支援多級目錄 cd .. 切換到上一級目錄 cd / 切換到根目錄 ll 顯示當

python 見面試題整理

希望此文可以長期更新並作為一篇Python的面試寶典。每一道題目都附有詳細解答,以及更加詳細的回答連結。此篇是概念篇,下一篇會更新面試題程式碼篇。 (一)、這兩個引數是什麼意思:*args,**kwargs?我們為什麼要使用它們? 答:如果我們不確定往一個函式中傳入多少引數,或者我們希望以元組(tuple)

見面試題整理--計算機網路篇

計算機網路相關的知識點是在面試過程中開發者經常被問到。當然可能這一塊知識點與前面的作業系統、資料庫相比較比重可能沒那麼高。但是優秀的你,一定是想做好充分的準備吧! 歡迎點選去往常見面試題整理的前兩篇:   (一)請簡述TCP\UDP的區別 TCP和UDP是

見面試題整理—java部分

1、JVM—執行時資料區域 2、GC垃圾收集器 3、 棧分配 與 TLAB 4、Runnable 與 Callable 介面 5、Future 與 Futuretask 6、實現多執行緒的三種方式—Thread、

Java見面試題整理【2】

首先程式是靜態的指令集合,而程序是執行中的指令集合。 程序是分配資源的基本單位,而執行緒是獨立執行和排程的基本單位。 任意時刻,一個CPU只能執行一個程序,程序獲得資源後進行分配,由不同的執行緒來執行和協作。 1. 程序:程式的一次執行 2. 執行緒:CPU的基本排程單位 一個程序的記

見面試題整理--計算機網路篇(每位開發者必備)

計算機網路相關的知識點是在面試過程中開發者經常被問到。當然可能這一塊知識點與前面的作業系統、資料庫相比較比重可能沒那麼高。但是優秀的你,一定是想做好充分的準備吧! 歡迎點選去往常見面試題整理的前兩篇: (一)請簡述T

dubbo見面試題整理

1、測試和生產公用一套zookeeper,怎麼保證消費不衝突服務釋出的group設定為不同即可<!--consumer.xml--> <dubbo:reference id="comm1" timeout="100000" interface="com.ac

見面試題整理+網易實習生面試

(下午要去面試有道...還是做一點功課比較好...) 簡答 1.     多型實現機制 多型性可以簡單的概括為“1個介面,多種方法”,在程式執行的過程中才決定呼叫的機制,通過父類指標呼叫子類的函式,可以讓父類指標有多種形態。 編譯器為每個類的物件提供一個虛表指標,這個指

HashMap見面試題整理

花了三天時間來仔細閱讀hashMap的原始碼,期間補了下不少資料結構的知識,刷了不少相關的面試題並進行了整理 1.談一下HashMap的特性? 1.HashMap儲存鍵值對實現快速存取,允許為null。key值不可重複,若key值重複則覆蓋。 2.非同步,執行緒不安全。 3.底層是hash表,不

C語言_二叉樹的基本操作見面試題

本片部落格主要包含以下內容: 和二叉樹操作相關的佇列基本操作 初始化 入佇列 判斷佇列是否為空 出佇列,返回對頭元素 和二叉樹相關的棧的基本操作 初始化 入棧 出棧 判空 返回棧頂元素並出棧 返回棧頂元素不出棧

Linux系統常用基本操作(一)

一、Linux命令列 [[email protected] ~]$ [[email protected] ~]# 1、user、root 當前操作的使用者; 2、@bigdata