基於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 動態載入到記憶體
過程
- 執行./configure檢測GCC編譯器,依賴函式庫或軟體是否已經安裝
- 當configure檢測通過後,生成makefile檔案
- make根據makefile生成可執行檔案(二進位制檔案)
- 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命令了,只能二選一