linux常用命令總結


1.查看進程:ps -ef 或者 ps -aux

2.查看網絡狀態:ifconfig

3.過濾:grep 過濾內容 文件路徑 (過濾改文件下的有過濾內容的內容)
grep -r 過濾內容 路徑 (過濾該路徑下的內容)

4. 動態顯示當前耗費資源最多進程信息:top

5. 命令不會用了,找男人 :man 如:man ls

6.測試網絡連通:ping + IP或者域名
本地:ping 127.0.0.1 或者 ping localhost

7.顯示網絡狀態信息:netstat

8.殺死進程:kill ,可以先用ps 或 top命令查看進程的id,然后再用kill命令殺死進程

9.清屏:clear

10.查看文件內容:cat 文件 [ | more] 分頁顯示
Cat +文件名 查詢顯示所有
Cat +文件名 |more:分頁顯示(空格,向下翻頁;回車,向下一行;q,退出)


11.切換目錄:cd 如:cd /etc

12.拷貝文件:cp 源文件名 新文件名 如文件備份:cp ifcfg-eth0 ifcfg-eth0.bak

13.Vi+文件名:編輯文件
開始編輯:a
退出編輯esc
保存:shift+zz

使用技巧:

Vi +文件名:打開文件
gg:光標定位首行
yy:復制光標所在行
dd:剪切光標所在行
p:粘貼
u:撤銷
ctrl+r:反撤銷
:?查找內用:查找
:%s/查找內容/替換內容/[g]:替換操作【g】全局替換
i : 轉換到插入模式
x : 刪除當前字符
. : 重復最后一次的修改操作(同PS里ctrl+f執行濾鏡)
u : 撤銷操作
CTRL-R : 重做
p : 將刪除的字符插入到當前位置(put)

退出保存:
:q : 退出
:q! : 不保存退出
ZZ : 保存后退出
:e! : 放棄修改重新編輯

14.Ctrl+c:結束進程;

15.上下按鍵:查看之前輸入的命令

16.Pwd:顯示當前目錄

17.History:查看歷史命令

18.常用目錄:
/etc:系統的配置信息。如配置網卡信息:cd /etc/sysconfig/network-scripts
/usr:最龐大的目錄,要用到的應用程序和文件幾乎都在這個目錄

19.操作網絡服務
啟動:etc/init.d/network start
停止:etc/init.d/network stop
重啟:etc/init.d/network restart
或者:
service network shart/stop/restart

網卡的開啟和關閉:
ifconfig eth0 down/up


20.關機:halt
重啟:reboot


21.顯示文件或目錄:ls  
-l 列出文件詳細信息l(list) ==》ll
-a 列出當前目錄下所有文件及目錄,包括隱藏的a(all)

ll結果說明:
類型及權限 | 引用數 | 用戶 | 組 | 大小 | 月 | 日 | 年/時間 | 名稱
文件類型說明:
-:普通文件
d:目錄文件
b:塊文件
c:字符設備
l:鏈接
s:套接字


22.對文件整體的操作:

touch:創建普通文件
格式:touch file1 [file2]

cp:拷貝文件
格式:Cp 文件名 [新文件名]
Cp 文件名 路徑 /[新文件名] 拷貝到其他路徑下[新文件名]
如:Cp –r aa/ccc . :將aa下的ccc文件夾拷貝到aa目錄

rm:刪除文件
格式:Rm [路徑]文件名
Rm –rf aa:刪除路徑包含里面的文件,不提示;

mkdir:創建目錄
格式:mkdir dir1 [dir2]

rmdir:刪除目錄(空)
格式:rmdir dir
非空路徑: Rm –rf aa:刪除路徑包含里面的文件,不提示;


Mv: 移動目標文件
格式:mv 目標文件 路徑[/new文件名]


23.目錄跳轉:cd
cd /etc/sysconfig 絕對路徑跳轉
cd aaa 相對路徑跳轉
cd ../ 跳轉上級目錄


24.文件的搜索定位:
grep :
grep ftp /etc/passwd 在文件/etc/passwd下查找包含‘ftp’字符的行。
grep 'test' d* 查詢所有以d開頭的文件中包含‘test’的行
ls /bin | grep '^m' 通過管道過濾ls /bin輸出內容,只顯示以m開頭的行
grep -i 'helloword' menu.h main.c
顯示在文件 menu.h 和 main.c 中匹配 helloword 的行,胡洛大小寫


find:
格式:find [目錄] [條件] [動作]
-name 指定文件名
-type 指定文件類型{l/b/c/d/p/f}
-size 指定文件大小,單位k/M/G,+表示大於,-表示小於
-user 指定用戶
-group 指定組

25.打印環境變量
echo $PATH
環境變量的設置:
方式一:一次性設置。
export PATH=$PATH:dir1[dir2]
方式二:永久性設置,所有用戶都生效,需要重啟生效或使用source命令。
將方式一的操作添加到文件/etc/profile的末尾
方式三:永久性設置,只針對一個用戶,需要重啟生效或使用source命令。優先級高於二。
將方式一的操作添加到文件~/.bashrc末尾。

26.文件的壓縮:tar。
-c:壓縮
-x:解壓
-z:使用gzip
-f:使用bzip2
-v:顯示壓縮過程的詳細信息
-c:指定解壓后存放的路徑
如:
Tar –zcvf 壓縮文件名.tar.gz 需要壓縮的目標文件 壓縮
Tar –zxvf 壓縮文件名.tar.gz [–C壓縮到的路徑] 解壓

 

27.權限管理chmod(修改文件的權限)。
權限說明:
1:文件類型(l/b/c/d/p/-/s)
2/3/4:文件所有者的 讀(r)/寫(r)/執行(x) 權限, -表示不具有該權限。
5/6/7:文件所有者所屬的組的讀/寫/執行權限
8/9/10:其他用戶的組的讀/寫/執行權限
11:.表示啟用了selinux。空白表示沒有開啟selinux。
如:
chmod +x file 給文件添加可執行權限
chmod -w file 給文件去掉可寫權限
chmod u+x file 給文件的所有者添加可執行權限
chmod g-w file 給文件的同組去掉可寫操作
chmod u=rwx,g=rx,o=rw file

28.用戶及用戶組。
/etc/passwd 該文件存放了系統中所有的用戶。如下:
用戶名:密碼:描述:用戶ID/UID:組ID/UID:用戶家目錄:shell

添加用戶:useradd 用戶名
-d:指定家用戶目錄
-u:指定用戶id(必須大於500,小於500倍系統占用)
-s:指定用戶執行的shell。
chsh 用戶名 -s /sbin/nologin 用戶已經創建,禁止登陸。

刪除用戶:userdel 用戶名

修改密碼:passwd [用戶名] 若不指定修改當前用戶的密碼
查看所有用戶的密碼 /etc/shadow

切換用戶:su [用戶]

若只想執行一個超級用戶的命令,不想切換用戶。在原來的命令前面添加sudo。

修改文件所屬的組:chgrp 組名 文件名

設置文件的所有者:chown 用戶 [:組名] 文件名


29.服務以及進程:vmstat

root@ubuntu:~# vmstat 2 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 3498472 315836 3819540 0 0 0 1 2 0 0 0 100 0


r 表示運行隊列
b 表示阻塞的進程
swpd 虛擬內存已使用的大小
free 空閑的物理內存的大小
buff Linux/Unix系統是用來存儲,目錄里面有什么內容,權限等的緩存
cache cache直接用來記憶我們打開的文件,給文件做緩沖
si 每秒從磁盤讀入虛擬內存的大小
so 每秒虛擬內存寫入磁盤的大小
bi 塊設備每秒接收的塊數量
bo 塊設備每秒發送的塊數量
in 每秒CPU的中斷次數,包括時間中斷
cs 每秒上下文切換次數
us 用戶CPU時間
sy 系統CPU時間
id 空閑 CPU時間
wt 等待IO CPU時間


30.top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似於Windows的任務管理器。

 

注意問題:

1.除了這些目錄的內容之外,另外要注意的是,因為根目錄與開機有關,開機過程中僅有根目錄會被掛載, 其他分區則是在開機完成之后才會持續的進行掛載的行為。就是因為如此,因此根目錄下與開機過程有關的目錄, 就不能夠與根目錄放到不同的分區去。

那哪些目錄不可與根目錄分開呢?有底下這些:

/etc:配置文件

/bin:重要執行檔

/dev:所需要的裝置文件

/lib:執行檔所需的函式庫與核心所需的模塊

/sbin:重要的系統執行文件

這五個目錄千萬不可與根目錄分開在不同的分區。請背下來啊。

 

以下為linux防火牆命令

1.查看防火牆信息
命令:iptables -L
cat /etc/sysconfig/iptable

2.關閉防火牆
命令:/etc/init.d/iptables stop
service iptables stop
啟動防火牆:/etc/init.d/iptables start
重啟防火牆:/etc/init.d/iptables restart

3.關閉防火牆的自啟。
查看系統自啟的進程服務:chkconfig 。
[root@localhost ~]# chkconfig iptables off (設置自動啟動為關閉)
# chkconfig --del iptables (移除開機自動啟動)

4.清除防火牆規則
命令:iptables -F ? iptables -X

5.保存防火牆設置。
命令:/etc/rc.d/init.d/iptables save


6. 為了能采用遠程SSH登陸,我們要開啟22端口
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
注:這個規則,如果你把OUTPUT 設置成DROP的就要寫上這一部,好多人都是望了寫這一部規則導致,始終無法SSH.在遠程一下,是不是好了.

7. 如果開啟了web服務器,OUTPUT設置成DROP的話,同樣也要添加一條鏈:
# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

8. 允許icmp包通過,也就是允許 ping
# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT設置成DROP的話)
# iptables -A INPUT -p icmp -j ACCEPT (INPUT設置成DROP的話)

9. 允許loopback!(不然會導致DNS無法正常關閉等問題)
# iptables -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
# iptables -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)

10. 減少不安全的端口連接
# iptables -A OUTPUT -p tcp --sport 31337 -j DROP
# iptables -A OUTPUT -p tcp --dport 31337 -j DROP

11. 只允許192.168.0.3的機器進行SSH連接
# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT

12.開啟轉發功能,(在做NAT時,FORWARD默認規則是DROP時,必須做)
# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT

13.丟棄壞的TCP包
#iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP

14.處理IP碎片數量,防止攻擊,允許每秒100個
#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

15.設置ICMP包過濾,允許每秒1個包,限制觸發條件是10個包
#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT


16.命令講解:

五個規則鏈:
1.PREROUTING (路由前)
2.INPUT (數據包流入口)
3.FORWARD (轉發管卡)
4.OUTPUT(數據包出口)
5.POSTROUTING(路由后)


-A:追加,在當前鏈的最后新增一個規則

INPUT (數據包流入口)

OUTPUT(數據包出口)

-s:指定作為源地址匹配,這里不能指定主機名稱,必須是IP

IP | IP/MASK | 0.0.0.0/0.0.0.0
而且地址可以取反,加一個“!”表示除了哪個IP之外

-p:用於匹配協議的(這里的協議通常有3種,TCP/UDP/ICMP)

-i eth0:從這塊網卡流入的數據
流入一般用在INPUT和PREROUTING上

-o eth0:從這塊網卡流出的數據
流出一般在OUTPUT和POSTROUTING上

-m multiport:表示啟用多端口擴展

-j ACTION:
DROP:悄悄丟棄
ACCEPT:接受

 

 以下是linux遠程ssh相關命令

1、查看SSH客戶端版本

有的時候需要確認一下SSH客戶端及其相應的版本號。使用ssh -V命令可以得到版本號。需要注意的是,Linux一般自帶的是OpenSSH: 下面的例子即表明該系統正在使用OpenSSH:

$ ssh -V 
OpenSSH_3.9p1, OpenSSL 0.9.7a Feb 19 2003

下面的例子表明該系統正在使用SSH2:

$ ssh -V 
ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on i686-pc-linux-gnu

2、連接到遠程主機:

命令格式 :

ssh [-l login_name] [-p port] [user@]hostname
ssh name@remoteserver 或者
ssh remoteserver -l name
不指定用戶,默認使用root賬戶登錄

  ssh 192.168.0.11 

指定用戶:

  ssh -l root 192.168.0.11

  ssh root@192.168.0.11

 

說明:以上兩種方式都可以遠程登錄到遠程主機,server代表遠程主機,name為登錄遠程主機的用戶名。

3、連接到遠程主機指定的端口:

命令格式:
ssh name@remoteserver -p 2222 或者
ssh remoteserver -l name -p 2222

修改過ssh登錄端口的可以:

  ssh -p 12333 192.168.0.11

  ssh -l root -p 12333 192.168.0.11

  ssh -p 12333 root@192.168.0.11
說明:p 參數指定端口號,通常在路由里做端口映射時,我們不會把22端口直接映射出去,而是轉換成其他端口號,這時就需要使用-p端口號命令格式。

4、通過遠程主機1跳到遠程主機2

命令格式:
ssh -t remoteserver1 ssh remoteserver2
說明:當遠程主機remoteserver2無法直接到達時,可以使用-t參數,然后由remoteserver1跳轉到remoteserver2。在此過程中要先輸入remoteserver1的密碼,然后再輸入remoteserver2的密碼,然后就可以操作remoteserver2了。

5、通過SSH運行遠程shell命令:

命令格式:
ssh -l name remoteserver ‘command’
說明:連接到遠程主機,並執行遠程主機的command命令。例如:查看遠程主機的內存使用情況。
$ ssh -l root 192.168.1.100 svmon -G

6、修改SSH監聽端口:

默認情況下,SSH監聽連接端口22,攻擊者使用端口掃描軟件就可以看到主機是否運行有SSH服務,將SSH端口修改為大於1024的端口是一個明智的選擇,因為大多數端口掃描軟件(包括nmap)默認情況都不掃描高位端口。打開/etc/ssh/sshd_config文件並查找下面這樣的行:
Port 22
去掉該行前面的# 號,然后修改端口號並重新啟動SSH服務:
$ /etc/init.d/ssh restart

7、僅允許SSH協議版本2

有兩個SSH協議版本,僅使用SSH協議版本2會更安全,SSH協議版本1有安全問題,包括中間人攻擊(man-in-the-middle)和注入(insertion)攻擊。編輯/etc/ssh/sshd_config文件並查找下面這樣的行:
# Protocol 2,1
修改為
Protocol 2

8、禁止root用戶登錄:

通常情況下,不采用直接用root用戶登錄到遠程主機,由於root用戶擁有超級權限,這樣會帶來安全隱患,所以,一般我們用普通用戶登錄,當需要管理遠程主機時,再切換到root用戶下。打開/etc/ssh/sshd_config文件並查找下面這樣的行:
#PermitRootLogin yes
將#號去掉,然后將yes修改成no,重啟ssh服務,這樣就可以禁止root用戶登錄。

將#號去掉,然后將bannertest.txt文件的全路徑替換/some/path,然后保存,重啟ssh服務。當客戶端登錄時,就會看到bannertest.txt文件中的提示信息。

9、進行端口映射:

假如公司內網有台web服務器,但是只對內不對外,這樣,外網就無法訪問,可以用ssh進行端口映射來實現外網訪問內網的web服務器。假如web服務器名為webserver,webserver可以用ssh訪問到遠端主機remoteserver,登錄到webserver,然后用下面命令進行映射
命令格式:
ssh -R 3000:localhost:80 remoteserver
執行完成后,在remoteserver機器上,執行netstat -an | grep 3000,查看有沒有開通3000端口。並執行以下命令觀察是否可以打開webserver上的網頁
$ w3m http://127.0.0.1:3000
如果能打開界面,說明映射成功.但是,這只限於本機訪問web服務器,即只能remoteserver機器訪問webserver。因為3000端口綁定的是remoteserver機器的127.0.0.1端口。可以編輯remoteserver機器上的/etc/ssh/sshd_config文件並添加如下內容:
添加 GatewayPorts yes 內容,把監聽端口3000綁定到 0.0.0.0 地址上,這樣外部的所有機器都能訪問到這個監聽端口,然后保存退出。並重啟ssh服務。完成后其它機器就可以在瀏覽器中輸入 http://remoteserver:3000來訪問webserver了。

10、設置登錄時提示信息

首先編輯一個文件,如bannertest.txt,文件內容自行定義。然后打開/etc/ssh/sshd_config文件並查找下面這樣的行:
#Banner /some/path

 

11、修改ssh端口

修改ssh登錄端口和禁止root登錄。改端口可以防止被端口掃描。

編輯配置文件:

  vim /etc/ssh/sshd_config

找到#Port 22,去掉注釋,修改成一個五位的端口:

  Port 12333

找到#PermitRootLogin yes,去掉注釋,修改為:

  PermitRootLogin no

重啟sshd服務:

  service sshd restart

成功重啟: Stopping sshd: [ OK ]
      Starting sshd: [ OK ]

 

12、注銷是logoff 斷開是tsdiscon

 

 

13、簡單的傳輸命令:scp

scp user@ww.linuxidc.com:/etc/php.ini /home/user2

將主機ww.liniux.cn 上的/etc/php.ini文件copy到本地/home/user2目錄下

Linux開啟ssh

1.查看有沒有開啟:

⑴查看端口有沒有開, netstat -an|grep 22

⑵查看ssh服務有沒有運行:ps -e | grep ssh

⑶ssh服務的網絡連接情況: netstat -ntlp 

 

2.相關命令

⑴重新啟動SSH服務,命令為:/etc/init.d/sshd restart

⑵驗證SSH服務狀態,命令為:/etc/init.d/sshd status

⑶看到系統中ssh安裝包:rpm -qa | grep ssh 

⑸關閉防火牆 service iptables stop

 

 

      1. 開放端口命令: /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

      2.保存:/etc/rc.d/init.d/iptables save

      3.重啟服務:/etc/init.d/iptables restart

      4.查看端口是否開放:/sbin/iptables -L -n

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM