對于Linux下的開發人員來說,除了編寫代碼之外,也要熟練掌握Linux作業系統的一些基本操作。很多開發人員可能會有這樣的經曆:有很多非常簡單的操作指令長期不用就忘掉了,等需要用到的時候又要到處去找,甚至去問周圍的同僚。在尴尬之餘,我們也怪自己沒有将那些簡單而有用的操作指令記錄下來。
本文彙總了我在使用Linux的過程中所使用過的一些基本操作,可供相關的開發人員參考。本文中的操作指令雖然比較簡單,但很實用,相信對大家會有所幫助的。
這些基本的操作指令如下:
1.Linux下,如何從目前普通使用者切換到root使用者?如何從root使用者切換到普通使用者?如何從目前普通使用者切換到其他普通使用者?
1)從目前普通使用者切換到root使用者可使用su指令,并需要輸入使用者名(root)和密碼。操作示例如下:
zhou:~> su - root Password: root:~
其中,輸入的密碼是不會顯示出來的。
2)從root使用者切換到普通使用者也使用su指令,隻需要輸入使用者名。操作示例如下:
root:~ su - zhou zhou:~>
3)從目前普通使用者切換到其他普通使用者也使用su指令,并需要輸入使用者名和密碼。操作示例如下:
zhou~> su - zhao zhao:~>
2.如何在Linux下的大量檔案中搜尋特定的文本内容?
可使用grep指令來實作特定文本内容的搜尋,具體使用示例如下:
(1)在某個檔案中搜尋特定的文本内容,例如在Test.txt中搜尋“Hello”,可使用如下兩個指令:
1)grep “Hello” Test.txt 2)cat Test.txt | grep “Hello”
(2)在某一系列檔案中搜尋特定的文本内容,例如在Test.txt、Test1.txt、Test2.txt…中搜尋“Hello”,可使用如下兩個指令:
1)grep “Hello” Test* 2)cat Test* | grep “Hello”
其中,星号(*)為通配符。
(3)在某一個或一系列檔案中搜尋特定的文本内容出現的次數,例如在Test.txt、Test1.txt、Test2.txt…中搜尋“Hello”的出現次數,可使用如下兩個指令:
1)grep “Hello” Test* | wc -l 2)cat Test* | grep “Hello” | wc -l
3.如何快速統計在Linux下的同類檔案(相同字首或字尾)的個數?
可使用“ls -ltr 檔案名 | wc -l”指令,操作示例如下:
zhou:~> ls -ltr Test* | wc -l 11
4.如何在Linux下對檔案進行壓縮和解壓縮?
可使用tar指令對檔案進行壓縮和解壓縮,具體操作示例如下:
1)如果想把test.txt檔案壓縮為test.tar,則可執行如下指令:
tar -zcvf test.tar test.txt
2)如果想把test.tar解壓縮,則可執行如下指令:
tar -zxvf test.tar
5.如何在Linux下使用指令登入到MySQL、Oracle和Sybase?
(1)登入到MySQL使用如下指令:
mysql -u使用者名 -p’密碼’ -h網絡IP位址 -P端口
如:
mysql -uroot -p’root’ -h10.10.10.10 -P3306
(2)登入到Oracle使用如下指令:
sqlplus 使用者名/’密碼’@資料庫服務名
sqlplus username/’userpwd’@db10_10_10_10
注意:登入Oracle之前需要到Oracle目錄下的tnsnames.ora檔案裡面配置資料庫服務名,如下所示:
db10_10_10_10 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.10)(PORT = 1521)) ) (CONNECT_DATA = (SERVER=DEDICATED) (SERVICE_NAME = db)
(3)登入到Sybase使用如下指令:
isql -U使用者名 -P密碼 -S資料庫服務名
isql -Uusername -Puserpwd -Sdb10_10_10_10
6.如何在Linux下使用指令啟動Oracle?
首先登入到Oracle使用者下,然後按照如下步驟操作:
(1)打開Oracle監聽
lsnrctl start
(2)進入sqlplus
sqlplus /nolog
(3)使用sysdba角色登入sqlplus
SQL> conn /as sysdba
(4)啟動資料庫
SQL> startup
經過上面的四個步驟,Oracle資料庫就可以正常啟動并使用了。
啟動之後,可以用這個指令檢視啟動是否正常:lsnrctl status。
如果要關閉資料庫,可在第(4)步執行“shutdown”指令,如果要強制關閉,則使用“shutdown abort”指令。
在Oracle使用者下直接運作SQL腳本,可使用如下指令:
sqlplus username/’userpwd’@db10_10_10_10 @test.sql
7.如何在Linux下使用指令啟動Sybase?
首先登入到Sybase使用者下,然後按照如下步驟操作:
(1)轉到install目錄下
可使用cd指令,如本人使用的是15.0版本的Sybase,則需要執行如下指令:
cd /home/sybase/ASE-15_0/install
(2)使用“startserver -f RUN_SYBASE”指令啟動Sybase
注意,“RUN_SYBASE”是一個shell腳本檔案,用于啟動Sybase,不同的Sybase安裝版本中的檔案名會有所差別。
在Sybase使用者下直接運作SQL腳本,可使用如下指令:
isql -Uusername -Puserpwd -Sdb10_10_10_10 -itest.sql
8.如何在Linux下檢視目前系統的時間?
直接使用“date”指令即可,如下所示:
~date Thu May 5 11:10:41 CST 2016
9.如何在Linux下添加和删除使用者?
首先切換到root使用者下,然後按照如下示例執行添加使用者的操作:
~useradd -d /home/zhou -m zhou ~passwd zhou Changing password for zhou. ~New password: ~Re-enter new password: ~Password changed
删除使用者時,隻需在root使用者下執行如下操作即可:
userdel -r zhou
10.當Linux下有程式崩潰的時候,如何修改作業系統配置以産生core檔案?
當Linux下程式異常退出時,核心會在目前工作目錄下生成一個core檔案(是一個記憶體映像,同時加上調試資訊)。
通過如下兩個步驟可以讓系統将core檔案産生出來:
(1)在目前使用者下執行“ulimit -a”指令以檢視程式異常崩潰時是否會産生core檔案。示例如下:
~ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 46741 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) 5095324 open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 46741 virtual memory (kbytes, -v) 4795600 file locks (-x) unlimited
(2)“core file size”為0表示不會産生core檔案,可用“ulimit -c filesize”指令設定core檔案大小。示例如下:
~ ulimit -c 1000000 core file size (blocks, -c) 1000000
11.當Linux下使用VI編輯檔案時,如何快速跳轉到檔案的第一行和最後一行?
(1)要跳轉到檔案的第一行,可以使用如下指令:
1)gg
2):0 (注意:冒号是不可少的)
3):1 (注意:冒号是不可少的)
(2)要跳轉到檔案的最後一行,可以使用如下指令:
1):$ (注意:冒号是不可少的)
2)Shift + G (即Shift鍵和G鍵的組合)
12.如何檢視Linux下的檔案中的重複記錄?
(1)如果是單個檔案,可使用如下指令:
cat 檔案名 | uniq -d
cat test.txt | uniq -d
(2)如果是多個檔案(相同字首或字尾),可使用如下指令:
cat (檔案字首)或(檔案字尾) | uniq -d
cat test* | uniq -d
13.如何統計Linux下的檔案中的記錄行數和位元組數?
(1)對于單個檔案中的記錄行數和位元組數的統計,可使用如下指令:
1)統計記錄行數
wc -l 檔案名
~ wc -l TestFile.txt 5 TestFile.txt
2)統計位元組數
wc -c 檔案名
~ wc -c TestFile.txt 48 TestFile.txt
(2)對于多個檔案中的記錄行數和位元組數的統計,可使用如下指令:
wc -l (檔案字首)或(檔案字尾)
~ wc -l TestFile* 2 TestFile1.txt 7 total
wc -c (檔案字首)或(檔案字尾)
~ wc -c TestFile* 18 TestFile1.txt 66 total
14.如何檢視Linux下的某個目錄下的檔案總數?
可使用如下指令:
ls -1 | wc -l
~ ls -1 | wc -l 41
15.如何在Linux下使用FTP功能?
第一步,啟用系統的FTP功能
在root使用者下執行如下指令:
service vsftpd start
第二步,執行ftp指令,連接配接到對端IP
~ ftp 10.10.10.10 Connected to 10.10.10.10. 220 (vsFTPd 2.0.7) Name (10.10.10.10:zhou):
第三步,輸入使用者名和密碼
~ Name (10.10.10.10:zhou): zhou 331 Please specify the password. ~ Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp>
通過以上三步,就已經通過FTP的方式連接配接到對端機器上了。
如果還要擷取某個檔案,可繼續執行第四步操作。
第四步,擷取某個檔案
ftp> get test.txt local: test.txt remote: test.txt 229 Entering Extended Passive Mode (|||30090|) 150 Opening BINARY mode data connection for 166servicemain.sh (698 bytes). 100% |*******************************************************************************| 698 2.28 MB/s 00:00 ETA 226 File send OK. 698 bytes received in 00:00 (64.39 KB/s)
如果要停止FTP,則繼續執行第五步操作。
第五步,停止FTP
ftp> bye 221 Goodbye.
16.如何在Linux下使用GCC将C代碼檔案編譯為可執行的檔案?
假設現有HelloWorld.c檔案,可以使用如下指令(指令中的gcc均可替換為cc)将其編譯為可執行的檔案:
(1)生成a.out可執行檔案
第一步,執行:gcc -c HelloWorld.c
第二步,執行:gcc HelloWorld.o
即可生成a.out檔案,然後執行./a.out指令,即可看到程式運作結果。
(2)生成HelloWorld可執行檔案
第二步,執行:gcc -o HelloWorld HelloWorld.o
即可生成HelloWorld檔案,然後執行./HelloWorld或HelloWorld指令,即可看到程式運作結果。
(3)生成HelloWorld可執行檔案
直接執行:gcc -o HelloWorld HelloWorld.c
(4)生成帶調試資訊的HelloWorld可執行檔案
直接執行:gcc -g -o HelloWorld HelloWorld.c 或 gcc -g HelloWorld.c -o HelloWorld
17.如何檢視Linux下某程序的詳細資訊?
直接使用“ps -ef | grep 程序(或程式)名”即可。
例如,要想檢視正在運作的“HelloWorld”程序的詳細資訊,可使用如下指令:
ps -ef | grep HelloWorld
指令執行結果如下:
~ ps -ef | grep HelloWorld 1009 7437 1 0 09:04 ? 00:00:21 HelloWorld
其中,第二個參數(即7437)為PID。
18.如何檢視Linux下某個檔案的類型及編碼格式等?
直接使用“file 檔案名”指令即可,使用示例如下:
~ file HelloWorld.c HelloWorld.c: ASCII C program text, with CRLF line terminators ~ file a.out a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped
可以看到,HelloWorld.c檔案是ASCII格式的C檔案,而a.out是可執行檔案。
19.如何檢視Linux下某個可執行檔案所依賴的庫檔案?
直接使用“ldd 檔案名”指令即可,使用示例如下:
~ ldd a.out linux-gate.so.1 => (0xffffe000) libc.so.6 => /lib/tls/libc.so.6 (0x40032000) /lib/ld-linux.so.2 (0x40000000)
可以看到,a.out依賴于3個庫檔案。
20.如何檢視Linux下磁盤空間的占用情況?
直接使用“df -h”指令即可,示例如下:
~ df -h Filesystem Size Used Avail Use% Mounted on /dev/vda3 77G 19G 54G 26% / udev 3.8G 120K 3.8G 1% /dev tmpfs 3.8G 72K 3.8G 1% /dev/shm /dev/vda2 190M 36M 145M 20% /boot
21.如何将Linux下的資料庫腳本檔案從sh格式變為SQL格式?
假設要将example.sh檔案變為example.sql,則執行步驟如下:
(1)上傳sh檔案
使用FTP工具(如filezilla)将example.sh檔案上傳到Linux的對應目錄下。
(2)使用dos2unix指令修改檔案格式
由于example.sh檔案是在本地的Windows作業系統下編寫的,是以要先轉換為Linux下的格式才能使用。
dos2unix指令用來将DOS格式的文本檔案轉換成UNIX格式的,其使用的格式為:dos2unix file,如果一次轉換多個檔案,把這些檔案名直接跟在dos2unix之後(dos2unix file1 file2 file3 …)。
在這裡,指令執行如下:
~ dos2unix example.sh dos2unix: converting file example.sh to UNIX format …
(3)使用chmod指令修改檔案的權限
在執行了dos2unix指令之後,還是不能立馬生成檔案,還需要修改檔案的權限。
chmod指令是Linux系統中最常用到的指令之一,用于改變檔案或目錄的通路權限。
在這裡,指令為:chmod 777 example.sh
(4)生成SQL檔案
直接運作帶字尾的sh檔案名,即可生成SQL檔案。指令如下:
~ example.sh example.sql no exits and is creating it
表示example.sql檔案之前不存在,這是第一次生成。
注意:如果example.sh檔案本來就是在Linux下編輯的,那麼就可以直接執行第四步操作(生成SQL檔案)。
22.如何在Linux下跟蹤程式所生成的日志?
程式所生成的日志檔案一般以.log作為字尾,在産生日志的過程中,可以用“tail -f 日志檔案名”指令來跟蹤日志。示例如下:
~ tail -f test.log Hello,world
如果要檢視具體的日志檔案内容,可以使用“vi 日志檔案名”指令。示例如下:
~ vi test.log
可以直接使用鍵盤上的上下左右按鈕來檢視日志内容,如果要搜尋文本内容,可以使用“/欲查找内容”指令(如:/world)。
23.如何在Linux下檢視某個系統程式是否存在?
直接使用“whereis 程式名”指令即可,示例如下:
~ whereis telnet telnet: /usr/bin/telnet /usr/share/man/man1/telnet.1.gz
24.如何将Linux下的makefile檔案所編譯的程式從32位移植為64位?
在将編譯程式所需要的庫都替換為64位的庫之後,隻需要直接修改makefile檔案即可。
具體要修改makefile檔案中的内容為:
(1)在“CF_MACRO”項值的後面添加“-D_64_BIT_ -D_REENTRANT -D_PSTAT64”。
(2)在“CFLAGS”項值的最前面添加“-fPIC”。
(3)在最後一個gcc緊接着的後面添加“-fPIC”。
25.如何使用指令對Linux下的檔案和目錄進行備份?
直接使用cp指令即可,具體如下:
(1)檔案的備份
1)直接在目前目錄下備份檔案,使用指令“cp 原檔案名 備份檔案名”。示例如下:
~ ll -rw——- 1 zhou users 94 2016-05-09 09:43 HelloWorld.c ~ cp HelloWorld.c HelloWorld1.c -rw——- 1 zhou users 94 2016-05-12 15:18 HelloWorld1.c
2)将檔案備份到其他目錄中,使用指令“cp 原檔案名 備份目錄/備份檔案名”。示例如下:
~ cp HelloWorld.c /home/zhou/zhouzx/HelloWorld1.c
(2)目錄的備份
1)直接将目錄備份到目前位置,使用指令“cp -rf 原目錄名 備份目錄名”。示例如下:
~ cp -rf HelloWorld HelloWorld_bak
2)将目錄備份到其他地方,使用指令“cp -rf 原目錄名 備份目錄/備份目錄名”。示例如下:
~ cp -rf HelloWorld /home/zhou/zhouzx/HelloWorld_bak
26.如何在Linux下殺死某個程序?
首先要查找到要殺死的程序的PID,之後執行“kill -9 PID”指令即可。
例如,我們要殺死名為“HelloWorld”的程序,則執行示例如下:
zhou 24046 1 2 08:43 ? 00:00:00 HelloWorld ~ kill -9 24046 ~ ps -ef | grep impservice ~
27.如何修改Linux下某個檔案所屬使用者和群組?
直接在root使用者下執行“chown 所屬使用者:群組 檔案名”指令即可,示例如下:
~ll -rw-r–r– 1 root root 4 May 16 17:14 TestFile.txt ~chown zhou:zhao TestFile.txt -rw-r–r– 1 zhou zhao 4 May 16 17:14 TestFile.txt
28.如何删除Linux下的.swap檔案?
先檢視.swap檔案的完整檔案名,再将其删除。執行示例如下:
~ ll -a drwx—— 2 zhou users 192 2016-05-19 17:09 . drwx—— 4 zhou users 96 2016-05-05 17:39 .. -rw-r–r– 1 zhou users 491010 2016-05-19 17:09 Test.txt -rwxrwxrwx 1 zhou users 6774 2016-05-19 17:09 .Test.txt.swap ~ rm .Test.txt.swap
29.如何檢視Linux作業系統的位數?
有如下兩個指令可以檢視Linux作業系統的位數:
1) uname -a
2) lsb_release -d
1)執行第一個指令之後,結果如下:
~ uname -a Linux suse 3.0.76-0.11-default #1 SMP Fri Jun 14 08:21:43 UTC 2013 (ccab990) x86_64 x86_64 x86_64 GNU/Linux
可以看出,作業系統是64位的(x86_64 x86_64 x86_64 GNU/Linux)。
2)執行第二個指令之後,結果如下:
~ lsb_release -d Description: SUSE Linux Enterprise Server 11 (x86_64)
可以看出,作業系統是64位的(x86_64)。不僅如此,還可以看出使用的作業系統是SUSE Linux的第11版。
30.如何修改Linux的系統時間?
登入或切換到root使用者下,然後執行如下指令:
date -s “YYYY/MM/DD HH:MI:SS”
指令示例:
date -s “2016/05/04 13:49:07”
31.如何在Linux下使用指令啟動MySQL?
首先登入到mysql使用者下,然後執行如下指令:
xpecdmoni
如果要停止MySQL的運作,可執行如下指令:
xsuperstop
在MySQL使用者下直接運作SQL腳本,可使用如下指令:
mysql -uroot -p’root’ -h10.10.10.10 -P3306 -Ddb_name