Java開發人員必備Linux命令

JavaEdge發表於2019-02-19

管道符“|”將兩個命令隔開,左邊命令的輸出作為右邊命令的輸入。連續使用管道意味著第一個命令的輸出會作為 第二個命令的輸入,第二個命令的輸出又會作為第三個命令的輸入,依此類推

1 檔案管理

which

用於查詢檔案
會在環境變數$PATH設定的目錄裡查詢符合條件的檔案。

語法

which [檔案...]複製程式碼

引數:

-n<檔名長度>  指定檔名長度,指定的長度必須大於或等於所有檔案中最長的檔名。
-p<檔名長度>  與-n引數相同,但此處的<檔名長度>包括了檔案的路徑。
-w  指定輸出時欄位的寬度。
-V  顯示版本資訊。複製程式碼

例項

使用指令"which"檢視指令"bash"的絕對路徑,輸入如下命令:


Java開發人員必備Linux命令

上面的指令執行後,輸出資訊如下所示:


Java開發人員必備Linux命令

cp

複製檔案或目錄
cp [options] source dest
cp [options] source... directory
-a:此選項通常在複製目錄時使用,它保留連結、檔案屬性,並複製目錄下的所有內容。其作用等於dpR引數組合。
-d:複製時保留連結。這裡所說的連結相當於Windows系統中的快捷方式。
-f:覆蓋已經存在的目標檔案而不給出提示。
-i:與-f選項相反,在覆蓋目標檔案之前給出提示,要求使用者確認是否覆蓋,回答"y"時目標檔案將被覆蓋。
-p:除複製檔案的內容外,還把修改時間和訪問許可權也複製到新檔案中。
-r:若給出的原始檔是一個目錄檔案,此時將複製該目錄下所有的子目錄和檔案
-l:不復制檔案,只是生成連結檔案。
使用指令"cp"將當前目錄"test/"下的所有檔案複製到新目錄"newtest"下
$ cp –r test/ newtest

chmod

檔案呼叫許可權三級 : 檔案擁有者、群組、其他
利用 chmod 控制檔案如何被他人所呼叫。

  • r 表示可讀取
  • w 表示可寫入
  • x 表示可執行
  • X 表示只有當該檔案是個子目錄或者該檔案已經被設定過為可執行。

chmod也可以用數字來表示許可權如 :
chmod abc file
其中a,b,c各為一個數字,分別表示User、Group、及Other的許可權。

r=4,w=2,x=1
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=5。
將檔案 file1.txt 設為所有人皆可讀取 :

chmod ugo+r file1.txt
將檔案 file1.txt 設為所有人皆可讀取 

chmod a+r file1.txt
將檔案 file1.txt 與 file2.txt 設為該檔案擁有者,與其所屬同一個群體者可寫入,但其他以外的人則不可寫入 :

chmod ug+w,o-w file1.txt file2.txt

將 ex1.py 設定為只有該檔案擁有者可以執行 
chmod u+x ex1.py

將目前目錄下的所有檔案與子目錄皆設為任何人可讀取 
chmod -R a+r *
此外chmod也可以用數字來表示許可權如 :

chmod 777 file
語法為:

chmod abc file
其中a,b,c各為一個數字,分別表示User、Group、及Other的許可權。

r=4,w=2,x=1
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=5。
chmod a=rwx file
和

chmod 777 file
效果相同

chmod ug=rwx,o=x file
和

chmod 771 file複製程式碼

cat

功能:連線檔案並列印到標準輸出裝置
cat [-AbeEnstTuv] [--help] [--version] fileName
-n 或 --number:由 1 開始對所有輸出的行數編號
-b 或 --number-nonblank:和 -n 相似,只不過對於空白行不編號

例項:
把 textfile1 的文件內容加上行號後輸入 textfile2 這個文件裡:
cat -n textfile1 > textfile2

把 textfile1 和 textfile2 的文件內容加上行號(空白行不加)之後將內容附加到 textfile3 文件裡:
cat -b textfile1 textfile2 >> textfile3

清空 /etc/test.txt 文件內容:
cat /dev/null > /etc/test.txt

cat 也可以用來製作映象檔案。例如要製作軟盤的映象檔案,將軟盤放好後輸入:
cat /dev/fd0 > OUTFILE

相反的,如果想把 image file 寫到軟盤,輸入:
cat IMG_FILE > /dev/fd0

more

類似 cat ,不過會以一頁一頁的形式顯示,更方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示,而且還有搜尋字串的功能(與 vi 相似),使用中的說明檔案,請按 h
more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]

引數

-num 一次顯示的行數
-d 提示使用者,在畫面下方顯示 [Press space to continue, 'q' to quit.] ,如果使用者按錯鍵,則會顯示 [Press 'h' for instructions.] 而不是 '嗶' 聲
-l 取消遇見特殊字元 ^L(送紙字元)時會暫停的功能
-f 計算行數時,以實際上的行數,而非自動換行過後的行數(有些單行字數太長的會被擴充套件為兩行或兩行以上)
-p 不以捲動的方式顯示每一頁,而是先清除螢幕後再顯示內容
-c 跟 -p 相似,不同的是先顯示內容再清除其他舊資料
-s 當遇到有連續兩行以上的空白行,就代換為一行的空白行
-u 不顯示下引號 (根據環境變數 TERM 指定的 terminal 而有所不同)
+/pattern 在每個文件顯示前搜尋該字串(pattern),然後從該字串之後開始顯示
+num 從第 num 行開始顯示
fileNames 欲顯示內容的文件,可為複數個數

例項

逐頁顯示 testfile 文件內容,如有連續兩行以上空白行則以一行空白行顯示。
more -s testfile

從第 20 行開始顯示 testfile 之文件內容。
more +20 testfile複製程式碼

tac

從最後一行開始顯示內容,並將所有內容輸出

head:只顯示前幾行

tail

檢視檔案的內容,有一個常用的引數 -f 常用於查閱正在改變的日誌檔案
tail -10 someFile
檢視檔案後 10 行內容
head -10 someFile
檢視檔案前 10 行內容
tail -f someFile
用於除錯,實時檢視檔案內容,會把 filename 檔案裡的最尾部的內容顯示在螢幕上,並且不斷重新整理,只要 filename 更新就可以看到最新的檔案內容
tail [引數] [檔案]

-f 迴圈讀取
-q 不顯示處理資訊
-v 顯示詳細的處理資訊
-c<數目> 顯示的位元組數
-n<行數> 顯示行數
--pid=PID 與-f合用,表示在程式ID,PID死掉之後結束.
-q, --quiet, --silent 從不輸出給出檔名的首部
-s, --sleep-interval=S 與-f合用,表示在每次反覆的間隔休眠S秒複製程式碼

例項

要顯示 notes.log 檔案最後 10 行
tail notes.log

要跟蹤名為 notes.log 的檔案增長情況
tail -f notes.log
此命令顯示 notes.log 檔案最後 10 行
當將某些行新增至 notes.log 檔案時,tail 命令會繼續顯示這些行
顯示一直繼續,直到您按下(Ctrl-C)組合鍵停止顯示。

顯示檔案 notes.log 的內容,從第 20 行至檔案末尾:
tail +20 notes.log

顯示檔案 notes.log 的最後 10 個字元:
tail -c 10 notes.log複製程式碼

nl:和 cat 一樣,只是 nl 要顯示行號

make

編譯
-j :指定作業數。

man rm ( rm --help )

檢視幫助

2 磁碟管理

2.1 pwd

顯示工作目錄
執行pwd指令可立刻得知您目前所在的工作目錄的絕對路徑名稱。

2.2 cd

切換當前工作目錄至 dirName
若目錄名稱省略,則變換 home 目錄

2.3 mkdir

建立名稱為 dirName 子目錄

  • -p 確保目錄名稱存在,不存在的就建一個

2.4 ls

顯示指定工作目錄下之內容(列出目前工作目錄所含之檔案及子目錄)。
ls [-alrtAFR] [name...]

-a 顯示所有檔案及目錄 (ls內定將檔名或目錄名稱開頭為"."的視為隱藏檔,不會列出)
-h 用"K","M","G"來顯示檔案和目錄的大小。
-l 除檔名稱外,亦將檔案型態、許可權、擁有者、檔案大小等資訊詳細列出 = ll
-r 將檔案以相反次序顯示(原定依英文字母次序)
-t 將檔案依建立時間之先後次序列出
-A 同 -a ,但不列出 "." (目前目錄) 及 ".." (父目錄)
-F 在列出的檔名稱後加一符號;例如可執行檔則加 "*", 目錄則加 "/"
-R 若目錄下有檔案,則以下之檔案亦皆依序列出複製程式碼

列出根目錄()下的所有目錄:

# ls /
bin               dev   lib         media  net   root     srv  upload  www
boot              etc   lib64       misc   opt   sbin     sys  usr
home  lost+found  mnt    proc  selinux  tmp  var複製程式碼

列出目前工作目錄下所有名稱是 s 開頭的檔案,越新的排越後面 :
ls -ltr s*
將 /bin 目錄以下所有目錄及檔案詳細資料列出 :
ls -lR /bin
列出目前工作目錄下所有檔案及目錄;目錄於名稱後加 "/", 可執行檔於名稱後加 "*" :
ls -AF

find / -name libNativeMethod.so
等同 ll |grep someFile

3 文件編輯

grep

用於查詢檔案裡符合條件的字串。
grep指令用於查詢內容包含指定的範本樣式的檔案,如果發現某檔案的內容符合所指定的範本樣式,預設grep指令會把含有範本樣式的那一列顯示出來。若不指定任何檔名稱,或是所給予的檔名為"-",則grep指令會從標準輸入裝置讀取資料。
-r或--recursive 此引數的效果和指定"-d recurse"引數相同。
-v或--revert-match 反轉

反向查詢。前面各個例子是查詢並列印出符合條件的行,通過"-v"引數可以列印出不符合條件行的內容。
查詢檔名中包含 test 的檔案中不包含test 的行,此時,使用的命令為:
grep -v test *test*

4 系統管理

4.1 groupadd

建立一個新的工作組,新工作組的資訊將被新增到系統檔案中

  • 語法
    groupadd(選項)(引數)
g:指定新建工作組的[id](http://man.linuxde.net/id "id命令");
-r:建立系統工作組,系統工作組的組ID小於500;
-K:覆蓋配置檔案“/ect/[login](http://man.linuxde.net/login "login命令").defs”;
-o:允許新增組ID號不唯一的工作組。</pre>複製程式碼
  • 引數
    組名:指定新建工作組的組名
  • 例項
    建立一個新組,並設定組ID加入系統
groupadd -g 344 linuxde複製程式碼

此時在/etc/passwd檔案中產生一個組ID(GID)是344的專案

4.2 ps

顯示當前程式 (process) 的狀態

  • -A 顯示程式資訊


    Java開發人員必備Linux命令
  • -u user 顯示指定使用者資訊


    Java開發人員必備Linux命令
  • -ef 顯示所有命令,連帶命令列


    Java開發人員必備Linux命令
  • pstree |grep java
    檢視程式樹


    Java開發人員必備Linux命令

4.3 ifconfig

IP 地址配置,可以使用 setup 命令啟動字元介面來配置

4.4 uname

用於顯示系統資訊

uname可顯示電腦以及作業系統的相關資訊。

  • 語法
uname [-amnrsv][--help][--version]複製程式碼
  • 引數說明:
-a或--all  顯示全部的資訊。
-m或--machine  顯示電腦型別。
-n或-nodename  顯示在網路上的主機名稱。
-r或--release  顯示作業系統的發行編號。
-s或--sysname  顯示作業系統名稱。
-v  顯示作業系統的版本。
--help  顯示幫助。
--version  顯示版本資訊。複製程式碼

例項

  • 顯示系統資訊


    Java開發人員必備Linux命令
    uname -a
  • 顯示計算機型別


    Java開發人員必備Linux命令
    uname -m
  • 顯示計算機名


    Java開發人員必備Linux命令
  • 顯示作業系統發行編號


    Java開發人員必備Linux命令
  • 顯示作業系統名稱


    Java開發人員必備Linux命令
  • 顯示系統時間


    Java開發人員必備Linux命令

rpm -aq|grep php

檢視安裝介質

grep someText *

在當前目錄所有文字中查詢

env

環境配置,相當 window 下 set

env |grep PATH
檢視環境變數

export

相當於 set classpath

echo

輸出變數名

netstat -npl

檢視埠

lsof -i :22

檢視埠程式

cp from to

拷貝檔案

cp -fr ./j2sdk1.4.2_04 /usr/java
拷貝目錄

mv

用來為檔案或目錄改名、或將檔案或目錄移入其它位置。

語法

mv [options] source dest
mv [options] source... directory
引數說明:

  • -i: 若指定目錄已有同名檔案,則先詢問是否覆蓋舊檔案;
  • -f: 在mv操作要覆蓋某已有的目標檔案時不給任何指示;

mv引數設定與執行結果

mv 檔名 檔名 :將原始檔名改為目標檔名
mv 檔名 目錄名 :將檔案移動到目標目錄
mv 目錄名 目錄名 :目標目錄已存在,將源目錄移動到目標目錄;目標目錄不存在則改名
mv 目錄名 檔名 :出錯

例項

將檔案 aaa 更名為 bbb :
mv aaa bbb
將info目錄放入logs目錄中。注意,如果logs目錄不存在,則該命令將info改名為logs。
mv info/ logs
再如將/usr/student下的所有檔案和目錄移到當前目錄下,命令列為:
$ mv /usr/student/* .

rm -r

遞迴刪除, -f 表示 force

somefile
清空檔案內容

which java
檢視 java 程式對應的目錄

who

顯示當前使用者

users

顯示當前會話

zip -r filename.zip filesdir

某個資料夾打 zip 包

unzip somefile.zip

解壓 zip 文件到當前目錄

gunzip somefile.cpio.gz
解壓 .gz

cpio -idmv < somefile.cpio
CPIO 操作

ps auxwww|sort -n -r -k 5|head -5
按資源佔用情況來排序,第一個 5 表示第幾列,第二個 5 表示前幾位

hostname -i
顯示本機機器名,新增 i ,顯示 etc/hosts 對應 ip 地址

rpm -ivh some.rpm
安裝軟體

rpm -Uvh some.rpm
更新軟體

rpm -qa |grep somesoftName
是否已安裝某軟體

5 備份壓縮

tar

備份檔案
是用來建立,還原備份檔案的工具程式,它可以加入,解開備份檔案內的檔案。

引數:

-f<備份檔案>或--file=<備份檔案> 指定備份檔案。
-v或--verbose 顯示指令執行過程。
-x或--extract或--get 從備份檔案中還原檔案。
-z或--gzip或--ungzip 通過gzip指令處理備份檔案。

例項

壓縮檔案 非打包

# touch a.c       
# tar -czvf test.tar.gz a.c   //壓縮 a.c檔案為test.tar.gz
a.c複製程式碼

列出壓縮檔案內容

# tar -tzvf test.tar.gz 
-rw-r--r-- root/root     0 2010-05-24 16:51:59 a.c複製程式碼

解壓檔案
tar -xzvf test.tar.gz a.c
打包
tar –cvzf somefile.tar.gz fileDir

shutdown -i6 -y 0

立即重啟伺服器

reboot

立即重啟伺服器,相當於 shutdow –r now

halt

立即關機, shutdown -h

shutdonw -r 23:30

shutdown -r +15

shutdonw -r +30

定時重啟

gdmsetup

啟動系統配置管理介面,需要在圖形介面執行

setup

啟動文字配置管理介面

vi /etc/sysconfig/network

修改機器名 , 然後要重啟機器或者 service network restart

locale

顯示系統語言

export LANG=zh_CN.GBK

設定系統語言,解決 consol 中文亂碼

ln -s src_full_file the_link_name

建立軟連結

last

倒序檢視已登陸使用者歷史

history

檢視歷史命令

date -s 10/09/2009

修改日期

date -s 13:24:00

修改時間,直接 date 顯示時間

df -k

檢視檔案磁碟空間

df -v

檢視檔案空間

du

檢視磁碟空間使用情況

free

檢視記憶體使用情況

6 系統管理

top

實時顯示 process 的動態
d : 改變顯示的更新速度,或是在交談式指令列( interactive command)按 s
q : 沒有任何延遲的顯示速度,如果使用者是有 superuser 的許可權,則 top 將會以最高的優先序執行
c : 切換顯示模式,共有兩種模式,一是隻顯示執行檔的名稱,另一種是顯示完整的路徑與名稱S : 累積模式,會將己完成或消失的子行程 ( dead child process ) 的 CPU time 累積起來
s : 安全模式,將交談式指令取消, 避免潛在的危機
i : 不顯示任何閒置 (idle) 或無用 (zombie) 的行程
n : 更新的次數,完成後將會退出 top
b : 批次檔模式,搭配 "n" 引數一起使用,可以用來將 top 的結果輸出到檔案內
顯示程式資訊

top

顯示完整命令

top -c

以批處理模式顯示程式資訊

top -b

以累積模式顯示程式資訊

top -S

設定資訊更新次數

top -n 2

//表示更新兩次後終止更新顯示
設定資訊更新時間

top -d 3

//表示更新週期為3秒
顯示指定的程式資訊

top -p 139

//顯示程式號為139的程式資訊,CPU、記憶體佔用率等
顯示更新十次後退出

top -n 10
使用者將不能利用交談式指令來對行程下命令

top -s
將更新顯示二次的結果輸入到名稱為 top.log 的檔案裡

top -n 2 -b < top.log
vmstat 5 10

沒 5 秒重新整理一次,重新整理 10 次; time 、 timex 、 uptime 、 iostat 、 sar

cat /proc/cpuinfo|grep processor|wc – l

獲取 cpu 個數

service

service <service>
列印指定服務<service>的命令列使用幫助。
service <service> start
啟動指定的系統服務<service>
service <service> stop
停止指定的系統服務<service>
service <service> restart
重新啟動指定的系統服務<service>,即先停止(stop),然後再啟動(start)。
chkconfig --list
檢視系統服務列表,以及每個服務的執行級別。
chkconfig <service> on
設定指定服務<service>開機時自動啟動。
chkconfig <service> off
設定指定服務<service>開機時不自動啟動。

ntsysv

以全螢幕文字介面設定服務開機時是否自動啟動。
service mysqld start

啟動 mysql 服務,其他如

service mysqld stop

停止 mysql 服務

serice mysqld status

顯示 mysql 服務狀態

service –status-al
檢視已有服務

Systemd

設計目標是,為系統的啟動和管理提供一套完整的解決方案。
根據 Linux 慣例,字母d是守護程式(daemon)的縮寫。 Systemd 這個名字的含義,就是它要守護整個系統。
Systemd 並不是一個命令,而是一組命令,涉及到系統管理的方方面面。

systemctl

是 Systemd 的主命令,用於管理系統。
Systemd 可以管理所有系統資源。不同的資源統稱為 Unit(單位)。
Unit 一共分成12種。

Service unit:系統服務
Target unit:多個 Unit 構成的一個組
Device Unit:硬體裝置
Mount Unit:檔案系統的掛載點
Automount Unit:自動掛載點
Path Unit:檔案或路徑
Scope Unit:不是由 Systemd 啟動的外部程式
Slice Unit:程式組
Snapshot Unit:Systemd 快照,可以切回某個快照
Socket Unit:程式間通訊的 socket
Swap Unit:swap 檔案
Timer Unit:定時器

systemctl list-units命令可以檢視當前系統的所有 Unit 。

netstat -nap | grep port

yum( Yellow dog Updater, Modified)

是一個在Fedora和RedHat以及SUSE中的Shell前端軟體包管理器。

基於RPM包管理,能夠從指定的伺服器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。

yum提供了查詢、安裝、刪除某一個、一組甚至全部軟體包的命令,而且命令簡潔而又好記。

語法

yum [options] [command] [package ...]複製程式碼
  • options:可選,選項包括
    • -h(幫助)
    • -y當安裝過程提示選擇全部為"yes"
    • -q(不顯示安裝的過程)等等。
  • command:要進行的操作。
  • package操作的物件。

常用命令

1.列出所有可更新的軟體清單命令:yum check-update
2.更新所有軟體命令:yum update
3.僅安裝指定的軟體命令:yum install <package_name>
4.僅更新指定的軟體命令:yum update <package_name>
5.列出所有可安裝的軟體清單命令:yum list
6.刪除軟體包命令:yum remove <package_name>
7.查詢軟體包 命令:yum search <keyword>
8.清除快取命令:
yum clean packages: 清除快取目錄下的軟體包
yum clean headers: 清除快取目錄下的 headers
yum clean oldheaders: 清除快取目錄下舊的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除快取目錄下的軟體包及舊的headers

rpm (redhat package manager)

用於管理套件。
原本是 Red Hat Linux 發行版專門用來管理 Linux 各項套件的程式,由於它遵循 GPL 規則且功能強大方便,因而廣受歡迎。逐漸受到其他發行版的採用。RPM 套件管理方式的出現,讓 Linux 易於安裝,升級,間接提升了 Linux 的適用度。

引數說明:

-a  查詢所有套件
-q  使用詢問模式,當遇到任何問題時,rpm指令會先詢問使用者

chkconfig

檢查,設定系統的各種服務。
查詢作業系統在每一個執行等級中會執行哪些系統服務

chkconfig [--add][--del][--list][系統服務] 或 chkconfig [--level <等級代號>][系統服務][on/off/reset]複製程式碼

引數:

--add  增加所指定的系統服務,讓chkconfig指令得以管理它,並同時在系統啟動的敘述檔案內增加相關資料。
--del  刪除所指定的系統服務,不再由chkconfig指令管理,並同時在系統啟動的敘述檔案內刪除相關資料。
--level<等級代號>  指定讀系統服務要在哪一個執行等級中開啟或關畢。複製程式碼
列出chkconfig所知道的所有命令。
# chkconfig -list複製程式碼
開啟服務。
# chkconfig telnet/mysqld on //開啟Telnet/mysql服務
# chkconfig -list //列出chkconfig所知道的所有的服務的情況複製程式碼
關閉服務
# chkconfig telnet off  //關閉Telnet服務
# chkconfig -list //列出chkconfig所知道的所有的服務的情況複製程式碼

Ctrl命令

Ctrl C

kill foreground process
傳送 SIGINT 訊號給前臺程式組中的所有程式,強制終止程式的執行

Ctrl Z

suspend foreground process
傳送 SIGTSTP 訊號給前臺程式組中的所有程式,常用於掛起一個程式,而並非結束程式,使用者可以使用使用fg/bg操作恢復執行前臺或後臺的程式。fg命令在前臺恢復執行被掛起的進 程,此時可以使用ctrl-z再次掛起該程式,bg命令在後臺恢復執行被掛起的程式,而此時將無法使用ctrl-z 再次掛起該程式;一個比較常用的功能:
正在使用vi編輯一個檔案時,需要執行shell命令查詢一些需要的資訊,可以使用ctrl-z掛起vi,等執行 完shell命令後再使用fg恢復vi繼續編輯你的檔案(當然,也可以在vi中使用!command方式執行shell命令, 但是沒有該方法方便)。

ctrl-d:

Terminate input, or exit shell
一個特殊的二進位制值,表示 EOF,作用相當於在終端中輸入exit後回車

ctrl-/

傳送 SIGQUIT 訊號給前臺程式組中的所有程式,終止前臺程式並生成 core 檔案

ctrl-s

中斷控制檯輸出

ctrl-q

恢復控制檯輸出

ctrl-l

清屏

其實,控制字元都是可以通過stty命令更改的,可在終端中輸入命令"stty -a"檢視終端配置


Java開發人員必備Linux命令

kill

kill PID
殺掉某程式
kill -9 PID
此命令將訊號 9(SIGKILL 訊號)傳送到有效使用者擁有的所有程式,即使是那些在其他工作站上啟動以及屬於其他程式組的程式也是如此。如果一個您請求的列表正被列印,它也被停止。

source

也稱為“點命令”,也就是一個點符號(.)
常用於重新執行剛修改的初始化檔案,使之立即生效,而不必登出並重新登入。

source filename 或 . filename複製程式碼

source命令除了上述的用途之外,還有一個另外一個用途。在對編譯系統核心時常常需要輸入一長串的命令,如:

make mrproper
make menuconfig
make dep
make clean
make bzImage
…………複製程式碼

如果把這些命令做成一個檔案,讓它自動順序執行,對於需要多次反覆編譯系統核心的使用者來說會很方便,而用source命令就可以做到這一點,它的作用就是把一個檔案的內容當成shell來執行,
先在linux的原始碼目錄下(如/usr/src/linux-2.4.20)建立一個檔案,如make_command,在其中輸入一下內容:

make mrproper &&
make menuconfig &&
make dep &&
make clean &&
make bzImage &&
make modules &&
make modules_install &&
cp arch/i386/boot/bzImage /boot/vmlinuz_new &&
cp System.map /boot &&
vi /etc/lilo.conf &&
lilo -v複製程式碼

檔案建立好之後,每次編譯核心的時候,只需要在/usr/src/linux-2.4.20下輸入:
source make_command
即可,如果你用的不是lilo來引導系統,可以把最後兩行去掉,配置自己的載入程式來引導核心。
順便補充一點,&&命令表示順序執行由它連線的命令,但是隻有它之前的命令成功執行完成了之後才可以繼續執行它後面的命令。

問題:linux下有些工具安裝之後,除了要修改root下的.bashfile(也就是新增個環境變數) ,還要修改etc/profile 下的環境變數 , 兩個profile是幹什麼用的?區別?

解答:

  • /etc/profile :這個檔案是每個使用者登入時都會執行的環境變數設定,屬於系統級別的環境變數,設定在裡 面的東西對所有使用者適用
  • .bashfile 是單使用者登入時比如root會執行的,只對當前使用者適用,而且只有在你使用的也是bash作為shell時才行. rpm是red hat,fedora,centos這幾個發行版使用的安裝包,和其它tar.gz的區別是有個檔案頭,多了一些資訊。 rpm包多數是二進位制檔案,可以直接執行的,但tar.gz包很多是原始碼,要編譯後才能執行。 二進位制檔案和windows下的exe檔案一個意思,可以直接執行。

whereis

只能用於程式名的搜尋,而且只搜尋二進位制檔案(引數-b)、man說明檔案(引數-m)和原始碼檔案(引數-s)。如果省略引數,則返回所有資訊。

fuser

查詢檔案、目錄、socket埠和檔案系統的使用程式

1.查詢檔案和目錄使用者

fuser最基本的用法是查詢某個檔案或目錄被哪個程式使用:

# fuser -v ./ 
                     USER        PID ACCESS COMMAND
./:                  dailidong  17108 ..c.. bash
                     root      25559 ..c.. sudo
                     root      26772 ..c.. bash複製程式碼

2.查詢埠使用者

# fuser -vn tcp 3306

                            USER        PID ACCESS COMMAND
3306/tcp:            mysql      2535 F.... mysqld複製程式碼

在 vim 命令模式

:noh 取消/ sth 的搜尋結果高亮特效

ip

檢視本機的 IP 地址

ip addr show複製程式碼
Java開發人員必備Linux命令
結果

軟體包管理器

apt-get是Debian、Ubuntu、Linux Mint、elementary OS等Linux發行版的預設軟體包管理器
apt-get purge packagename 等同於 apt-get remove packagename --purge

apt-get remove

只刪除軟體包,不刪除配置檔案

apt-get purge

刪除軟體包並刪除配置檔案

配置檔案只包括/etc目錄中的軟體服務使用的配置資訊,不包括home目錄中的

相關文章