1. 程式人生 > >基於centos下的Linux學習

基於centos下的Linux學習

常用命令

touch filename.suffix                               ---建立檔案

more filename                                         ---看檔案,一次一屏

less                                                          ---看檔案 /查詢 n向下查詢 N向上查詢

tali -5 filename                                         ---直接顯示後5行

head -3 filename                                      ---直接顯示前3行

find /  -name filename                              ---按檔名查詢,從根目錄開始

         -user user                                        ---按使用者查詢

        -size size                                          ---按大小查詢

(例子:find / -name filename -exec cat {} \; 查詢到檔案後執行輸出內容命令)

which/whereis file                                      ---一般用來查命令

locate file                                                  ---查詢普通檔案,預設一天更新一次,新建立的檔案,

                                                                     需要先輸入updatedb命令,再查詢

ls >路徑                                                     --- >輸出重定向

ls >>路徑                                                   --- >>追加

例子 ls 1>路徑                                           ---1是正常輸出重定向

            2>/dev/null                                     ---2是錯誤重定向

df                                                                ---檢視已掛載的硬碟

fdisk                                                            ---檢視所有硬碟,也可進行分割槽

mkft -t ext4 diskname                                 ---格式化硬碟

mount 掛載的地方 要掛載的硬碟               ---掛載硬碟

                                                                       (所有硬碟都會出現在/dev下,有的沒有掛載)

unmount 掛載的硬碟                                  ---用於解除安裝掛載點

設定自動掛載硬碟

編輯/etc/fstab,在最後一行加上 掛載的硬碟 掛載點 型別 defaults 0 0

設定網路

vi /etc/selinux/config 檔案裡的selinux關閉 vi /etc/sysconfig/network-scripts/ifcfg-eth0(centos7中是ifcfg-ens33)

(要設定成動態獲取IP的話) 
ONBOOT=yes  
BOOTPROTO=static (要設定成靜態IP的話)
NETMASK=255.255.255.0 
IPADDR=X.X.X.X 
GATEWAY=X.X.X.X 
DNS1=8.8.8.8

service network restart    --- 重啟網絡卡

nmtui                               ---介面化設定ip地址命令

host 域名                         ---檢視域名主機的ip地址

nslookup 域名                  ---檢視域名對應的IP

netstat -a                         ---檢視網路的一些資訊

netstat -tnlp |grep 服務名 ---檢視服務的資訊

檔案許可權

-使用者 使用者組 其他(user group other) -rwxrw-r--r 讀許可權 4 w 寫許可權 2 x 執行許可權 1

修改使用者許可權(=是直接修改許可權,+是增加許可權,-是去除許可權)

chmod 777 ProgramName

            <==> 

chmod a+rwx ProgramName

            <==> 

chmod ugo=rwx ProgramName

隱藏許可權

suid chmod 4777 檔案 ---4代表suid,suid檔案的所有者

sgid chmod 2755 目錄 ---2代表sgid,sgid目錄的所有組

sbit chmod 1777 目錄  ---1代表sbit,sbit目錄下的檔案只能被所有者操作

給使用者加root許可權

/etc/sudoers下新增使用者

例項: 將所有資料夾許可權改為755,檔案改為644

chmod -R 644 路徑
find 路徑 -type d -exec chmod 0755 {} \;

快捷方式(軟連結)

在任何地方都可以直接使用檔案全名即可使用

ln -s filepath /usr/bin/filename

打包檔案

zip

zip 打包後的檔名 要打包的檔案      ---打包檔案

zip -r 打包後的檔名 要打包的檔案   ---打包資料夾(不加-r只打包資料夾,不打包裡面的內容)

unzip 要解包的zip包                            ---解壓zip包

bzip2/gzip

gzip、bzip2一次只能壓縮一個檔案

bzip2 要打包的檔案                            ---bzip2打包檔案

bzip2 -d 以bz2為字尾的檔案               ---bzip2解包

gzip 要打包的檔案                               ---gzip打包檔案

gzip -d 以gz為字尾的檔案                    ---gzip解包

tar

-j bzip2

-z gzip

-f 設定檔名

-c 新建打包檔案

-x 解包

-v 顯示執行過程

-t 檢視保重內容

tar -zcvf 打包後文件 打包源    ---打包檔案

tar -zxvf 打包檔案                    ---解包檔案

VI&VIM使用方法

:命令模式 esc鍵返回一般模式 i 進入編輯模式(i在當前位置插入,I在行首插入,a在下一字元插入,A在行尾插入,o在下一行插入,O在上一行插入) w 儲存 q 退出 dd 剪下 p 向下貼上 P 向上貼上 yy 複製 ndd 或 nyy 剪下n行或複製n行

命令模式下

:set nu                                         ---顯示行號

:sh                                               ---可以把vim放入後臺執行,推到shell中執行命令,按下exit後返回vim

:set tabstop=2                             ---自動縮排

:/word                                          ---查詢字元

:n                                                 ---查詢下一個

:n1,n2s/search/replace/g            ---從第n1行到第n2行搜尋search替換為replace,在/g後面加個c會詢問,較為安全

:u                                                 ---撤銷執行的操作

:r filename                                   ---匯入一個檔案內容

:sp                                               ---開啟一個新視窗,切換視窗,ctrl+w,鬆開w後,按上下鍵

賬號相關及密碼修改

使用者相關資訊,檢視/etc/passwd檔案,1000以後是使用者自己建立的使用者 使用者的密碼,檢視/etc/shadow檔案下,經過加密 管理使用者組,檢視/etc/group檔案 組密碼,檢視/etc/gshadow檔案裡

groupadd 組名                                                                 ---新增組 

useradd -g 組名 使用者名稱                                                   ---新增新使用者到固定組內

useradd -G 組名 使用者名稱                                                  ---新增新使用者到附加組

useradd -M 使用者名稱                                                           ---建立使用者時不建立家目錄

useradd -s /sbin/nologin 使用者名稱                                       ---建立一個不能登入的使用者

chgrp 所屬組 檔案                                                            ---更改檔案所有組

chown 所有者:所有組 檔案                                             ---更改檔案所有者所有組

usermod -G 附加組 使用者                                                  ---新增使用者的附加組

usermod -L 使用者                                                               ---鎖定使用者

usermod -u 使用者                                                               ---解鎖使用者

userdel 使用者                                                                     ---刪除使用者 加上-r意思連家目錄一起刪除

find / -nouser -exec rm -ri {} /;                                          ---查詢沒有使用者所有者的目錄

chage -r/I/M/m 使用者                                                         ---修改使用者的許可權日期

ACL

dumpe2fs -h /dev/sdb1 | grep acl                ---用於檢視是否支援acl,不支援的話,在defaults後面

                                                                         加個,acl,一般預設就有acl

setfacl -m u:使用者名稱:rwx 目錄                       ---設定使用者可以在目錄下使用acl

setfacl -m g:組名:rwx 目錄                          ---設定組可以在目錄下使用acl

setfacl -m m:rwx 目錄                                 ---設定mask許可權

getfacl 目錄                                                 ---得到目錄的acl

安裝軟體

wget 連結 下載軟體 make clean 清理make配置 修改依賴庫配置/etc/ld.so.conf ldconfig 動態載入到記憶體

過程

  1. 執行./configure檢測GCC編譯器,依賴函式庫或軟體是否已經安裝
  2. 當configure檢測通過後,生成makefile檔案
  3. make根據makefile生成可執行檔案(二進位制檔案)
  4. make install 路徑

檔案目錄

/var/lib 存放資料庫軟體/etc 存放配置檔案軟體/lib /usr/lib 需要的函式庫/usr/local 可執行檔案(一般軟體都安裝在這)

rpm安裝軟體

rpm -ivh 軟體名 ---安裝軟體

rpm -e 軟體名 ---刪除軟體

rpm -qa ---查詢資料庫

rpm -qa |grep -i '軟體名' ---查詢資料庫中的軟體

/var/lib/rpm

yum安裝軟體

yum 伺服器放了眾多軟體

yum install 軟體名 ---安裝軟體

yum erase 軟體名 ---刪除軟體

/var/cache/yum 下載伺服器的軟體資訊

任務

pkill -kill -t tty名                              ---踢走一個使用者或程序

w                                                    ---檢視現在的使用者的負載

last                                                 ---檢視現在所有使用者登入的資訊

lastlog                                             ---檢視使用者的登入資訊

write 使用者名稱 tty名                           ---向用戶發信息(發完資訊要按ctrl+d才能傳送出去)

wall 傳送的訊息                             ---廣播訊息

計劃任務

ps -l                                                     ---檢視自己的程序

ps aux                                                  ---檢視所有服務程序

ps aux | grep 程序名                            ---檢視查詢的程序

pstree                                                   ---以樹狀圖檢視當前所有程序

kill PID                                                  ---關閉程序

kill -9 PID                                             ---直接刪除程序

pkill -9 CMD(名字)                          ---刪除程序根據名字

killall -9 -i CMD(名字)                          ---刪除程序根據名字有確認框

at 時間 接著輸計劃執行命令,輸完ctrl+D

at -c 任務號                                        ---檢視計劃任務

at -l                                                     ---檢視所有計劃任務

at -d 任務號                                        ---刪除計劃任務

/etc/at.deny 拒絕執行計劃任務,裡面是使用者名稱

定時任務

crontab -e                                       ---編輯定時任務(最短為1分鐘)

crontab -l                                        ---顯示任務

crontab -r                                        ---刪除任務

vi /etc/crontab                                 使用crontab示例

watch 命令                                      ---每2秒執行一次命令

後臺執行任務

讓一個任務或者程式在後臺執行可以使用& jobs                                   ---檢視當前有多少在後臺執行的命令 bg                                      ---將一個在後臺暫停的命令,變成繼續執行 fg                                      ---將後臺中的命令調至前臺繼續執行 ctrl+z                                 ---可以將一個正在前臺執行的命令放到後臺,並且暫停

top 效能分析工具

PID — 程序id USER — 程序所有者 PR — 程序優先順序 NI — nice值。負值表示高優先順序,正值表示低優先順序 VIRT — 程序使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES RES — 程序使用的、未被換出的實體記憶體大小,單位kb。RES=CODE+DATA SHR — 共享記憶體大小,單位kb S — 程序狀態。D=不可中斷的睡眠狀態 R=執行 S=睡眠 T=跟蹤/停止 Z=殭屍程序 %CPU — 上次更新到現在的CPU時間佔用百分比 %MEM — 程序使用的實體記憶體百分比 TIME+ — 程序使用的CPU時間總計,單位1/100秒 COMMAND — 程序名稱(命令名/命令列) Ctrl+L 擦除並且重寫螢幕。 h或者? 顯示幫助畫面,給出一些簡短的命令總結說明。 k 終止一個程序。系統將提示使用者輸入需要終止的程序PID,以及需要傳送給該程序什麼樣的訊號。一般的終止程序可以使用15訊號;如果不能正常結束那就使用訊號9強制結束該程序。預設值是訊號15。在安全模式中此命令被遮蔽。 i 忽略閒置和僵死程序。這是一個開關式命令。 q 退出程式。 r 重新安排一個程序的優先級別。系統提示使用者輸入需要改變的程序PID以及需要設定的程序優先順序值。輸入一個正值將使優先順序降低,反之則可以使該程序擁有更高的優先權。預設值是10。 S 切換到累計模式。 s 改變兩次重新整理之間的延遲時間。系統將提示使用者輸入新的時間,單位為s。如果有小數,就換算成m s。輸入0值則系統將不斷重新整理,預設值是5 s。需要注意的是如果設定太小的時間,很可能會引起不斷重新整理,從而根本來不及看清顯示的情況,而且系統負載也會大大增加。 f或者F 從當前顯示中新增或者刪除專案。 o或者O 改變顯示專案的順序。 l 切換顯示平均負載和啟動時間資訊。 m 切換顯示記憶體資訊。 t 切換顯示程序和CPU狀態資訊。 c 切換顯示命令名稱和完整命令列。 M 根據駐留記憶體大小進行排序。 P 根據CPU使用百分比大小進行排序。 T 根據時間/累計時間進行排序。 W 將當前設定寫入~/.toprc檔案中。這是寫top配置檔案的推薦方法。

系統啟動流程(centos 6)

1、開源BIOS 2、啟動裝置(硬碟最其實位置)讀取一個小程式MBR boot loader 3、linux核心 Kernel 4、init pid1 5、/etc/rc.sysinit 6、根據/etc/inittab找到啟動級別 0-系統停機狀態 1-單使用者狀態 2-多使用者狀態(沒有NFS) 3-多使用者狀態(有NFS) 4-系統未使用,留給使用者 5-圖形介面 6-系統正常關閉並重新啟動

命令: init 3
或 systemctl set-default multi-user.target/graphical.target
systemctl get-default

7、去相應啟動級別的目錄/etc/rc5.d當中啟動,每一個字線為S的服務 8、執行/etc/rc.d/rc.local 9、使用者登入介面

chkconfig --list | grep 程式名
chkconfig --level 345 程式名 on
ntsysv 介面化自動啟動服務

SSH(ssh或22埠關閉,使用者不能遠端登入)

ssh 使用者名稱@ip地址 ssh 使用者名稱@ip地址 命令 scp 檔案 使用者名稱@ip地址:/路徑

VNC圖形遠端連線

需要先安裝vnc 

客戶端需要realvnc傳遞 server端需要配置/etc/sysconfig/vncservers,在裡面加上VNCSERVERS="2:使用者名稱",然後切到使用者名稱的使用者賬號下,用vncpasswd 使用者名稱 設定使用者的vnc密碼,開啟vnc服務

SAMBA共享

先關閉防火牆 配置/etc/samba/smb.conf 建立匿名帳戶就在security = usr後面新增map to guest = Bad User 在windows下輸入\samba伺服器地址即可,提示輸入使用者名稱和密碼,隨便輸

設定smb使用者

smbpasswd -a 使用者名稱  ---設定smb使用者密碼 

想要在共享資料夾下可以寫入檔案,需要在配置檔案下新增命令

writable = yes

新增有效使用者

valid users = 使用者名稱,使用者名稱

新增有效使用者組 

valid users = @組名

設定檔案/資料夾許可權

create mask = 0644
directory mask = 0755

防火牆

service iptables stop或
systemctl stop firewalld.service(centos7)  ---關閉防火牆
-L 檢視所有規則
-A 追加
-F 清除所有規則
-I 插入
-s 指定來源
-P 預設規則
-D 刪除規則
--line-number  顯示序號
--dport 目標埠
--sport 源埠
-p 協議  例子:iptables -A INPUT -p tcp --dport 80 -j ACCEPT
ping是使用icmp協議,22是ssh服務的埠,80是http服務的埠
-i 資料包進入的網絡卡
-o 資料包輸出的網絡卡

accept 接受資料進來 drop 丟棄資料包 reject 阻止資料包

定義規則

規則從上往下匹配,匹配成功就不往下匹配了 iptables -A INPUT -j DROP 遮蔽所有資料包 在檔案中寫規則 IPT="/sbin/iptables" $IPT -F $IPT -P INPUT DROP ... service iptables restart 儲存檔案為iptables.sh 加上許可權chmod u+x iptables.sh 執行./iptables

三次握手會使用到三個包 new包、RELATED包、ESTABLISHED連線 可以設定防火牆 iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

LAMP環境安裝

 Linux

Apache

yum -y install httpd httpd-devel

Mysql

yum -y install mysql mysql-server mysql-devel

PHP

yum -y install php php-mysql php-gd php-mbstring pho-devel

偽靜態

 rewrite .代表任意 +代表一個或多個 *代表0個或多個 ^代表開始 $代表結束 \轉義符

FTP

檔案傳輸協議

ftp埠 20,21 20埠 傳資料 21埠 命令 

主動模式與被動模式

主動模式

      1、客戶端隨機開一個>1024埠與伺服器FTP服務21埠進行連線

      2、客戶端監聽埠(>1024與伺服器端ftp服務連線的埠) 

      3、伺服器20>客戶端(>1024埠)傳送資料

被動模式

      1、客戶端開2個埠(n>1024 n+1)

      2、第一個埠與伺服器端21通訊

      3、客戶端主動通過的第二個埠向伺服器端請求資料,伺服器端隨機開一個大於1024的埠,來相應客戶端的連線 

 VSFTP

1、GPL協議的伺服器軟體 2、非常安全,基於ssh 3、非常快,單臺伺服器支援15000>的使用者連線

安裝vsftp

yum -y install vsftpd window下需要安裝客戶端filezilla才能登入ftp 設定最大連線數(修改/etc/vsftpd/vsftpd.conf) max_per_ip = 1 設定最大的下載次數 local_max_rate=20000

NTP

找一個伺服器,同步硬體時間和軟體時間 硬體時間與軟體時間

date   ---顯示軟體時間
date -s 時間    ---設定軟體時間
hwclock -r   ---顯示硬體時間
hwclock -s   ---將硬體時間同步到軟體時間
hwclock -w   ---將軟體時間同步到硬體時間
ntpdate server 伺服器地址 ---根據伺服器的時間進行軟體時間同步

注:如果開啟ntpd服務,就不能使用ntpdate命令了,只能二選一