Updated March 6, 2018
文件目錄管理
增
touch把已存在文件的時(shí)間更新為當(dāng)前系統(tǒng)時(shí)間或者創(chuàng)建新文件
cp sshd_config sshd_config.lema.20180301 # 備份
mkdir -p /home/lema/test/core # 遞歸創(chuàng)建目錄
mkdir stu{1..100} # 創(chuàng)建100個(gè)目錄
刪
rm -fr /
文件刪除原理
控制文件刪除的兩個(gè)變量:
i_link # 文件的硬鏈接數(shù)量
i_count # 引用計(jì)數(shù)(有幾個(gè)程序用了這個(gè)文件)
文件成功刪除條件:i_link==0 and i_count==0
查
diff比較兩個(gè)文本文件的不同,如果比較的是目錄則會(huì)比較兩個(gè)目錄是否有同名的文件
vimdiff test.txt test2.txt
tree -L 2 /etc # 以樹狀圖打印目錄的內(nèi)容
cat >>test.txt<<EOF
>aaa
>bbb
>EOF
cat -n test.txt # 顯示行號(hào)及文本內(nèi)容
nl test.txt # 顯示行號(hào)及文本內(nèi)容
head -3 test.txt
less test.txt # 支持上下翻查赏酥,支持查找
more test.txt
tail顯示指定文件的最后10行,若不加指定文件則讀取標(biāo)準(zhǔn)輸入
tailf /var/log/messages # 動(dòng)態(tài)查看文件內(nèi)容的變化
cut -f2,3 test.txt # 查看文件第2列第3列內(nèi)容
cut -c 2-10
updatedb
locate /etc/sh # 搜索etc目錄下所有以sh開頭的文件,比f(wàn)ind查找更快
# 不搜索具體目錄而是搜索數(shù)據(jù)庫(kù)/var/lib/locatedb
file # 探測(cè)給定文件的類型
b 塊設(shè)備文件
c 字符設(shè)備文件(串行端口的接口設(shè)備)
d 目錄
l 符號(hào)鏈接文件
du -h --max-depth=1 /usr # 查看文件文件夾大小
ls -alF # append indicator (one of */=>@|) to entries
ls -alrt # 查詢結(jié)果按修改時(shí)間逆向排序
ls -lhi # -i參數(shù)inode索引節(jié)點(diǎn)
當(dāng)你想讀寫一個(gè)文件時(shí),先通過(guò)讀取inode然眼,inode存儲(chǔ)文件屬性,不存文件名疗我,如果文件屬性不可讀歉摧,那就無(wú)法讀谭羔,然后訪問(wèn)block,block存儲(chǔ)文件內(nèi)容
磁盤讀取數(shù)據(jù)是按block為單位讀取的难裆,block越大,磁盤io性能越好镊掖,但是block太大乃戈,浪費(fèi)磁盤空間
stat test.txt # 顯示文件的狀態(tài)信息
改
mv剪切文件或重命名文件
>test.txt # 清空文件內(nèi)容
壓縮
tar -zcvf etc.tar.gz /etc # 打包壓縮/etc目錄
tar -jcvf etc.tar.bz /etc # 比較少用
tar -zxvf etc.tar.gz # 在當(dāng)前路徑下解壓
tar -jxvf etc.tar.bz -C /tmp # 在指定目錄下解壓
tar -xf etc.tar.gz # 自動(dòng)識(shí)別解壓方式并解壓
tar -tf etc.tar.gz # 列出壓縮文件的內(nèi)容
-c參數(shù)建立新的壓縮文件
-x參數(shù)從壓縮文件中還原文件
find /etc -type f |xargs tar -zcvf etc.tar.gz
tar -zcvf etc.tar.gz `find /etc -type f`
權(quán)限管理
Linux默認(rèn)權(quán)限:目錄755,文件644
目錄創(chuàng)建默認(rèn)最大權(quán)限777亩进,文件創(chuàng)建默認(rèn)最大權(quán)限666
umask 051 # 控制目錄文件權(quán)限的一個(gè)值
u:User症虑,即文件或目錄的擁有者;
g:Group归薛,即文件或目錄的所屬群組谍憔;
o:Other匪蝙,除了文件或目錄擁有者或所屬群組之外,其他用戶皆屬于這個(gè)范圍习贫;
a:All逛球,即全部的用戶,包含擁有者苫昌,所屬群組以及其他用戶颤绕;
r:讀取權(quán)限,數(shù)字代號(hào)為“4”;
w:寫入權(quán)限祟身,數(shù)字代號(hào)為“2”奥务;
x:執(zhí)行或切換權(quán)限,數(shù)字代號(hào)為“1”月而;
-:不具任何權(quán)限汗洒,數(shù)字代號(hào)為“0”;
s:特殊功能說(shuō)明:變更文件或目錄的權(quán)限父款。
chmod u+x,g+r test.txt
chmod 770 test.txt
chown -R lema test.txt # 改變某文件的所有者
chgrp lema test.txt # 更改文件的所屬組
chown lema.lema test.txt # 改變文件的所有者和所屬組
sudo # 在/etc/sudoers中設(shè)置了可執(zhí)行sudo指令的用戶
visudo -c # 會(huì)檢查語(yǔ)法是否正確 vi /etc/sudoers不會(huì)檢查語(yǔ)法
root ALL=(ALL) ALL # sudo su root
chattr +i /etc/passwd /etc/inittab # 改變文件屬性
lsattr # 查看文件的第二擴(kuò)展文件系統(tǒng)屬性
shell管理
xargs將標(biāo)準(zhǔn)輸入數(shù)據(jù)轉(zhuǎn)換成命令行參數(shù)
cat test.txt|xargs -n3 # 格式化輸出
find /root/data -type f|xargs tar -zcvf data.tar.gz # 一次性傳遞全部參數(shù)
find /root/data -type f -exec tar -zcvf data.tar.gz {} \; # 一個(gè)一個(gè)地傳遞參數(shù)溢谤,只壓縮了最后一個(gè)文件
HISTSIZE=5 # 設(shè)置history只顯示5條歷史命令
HISTFILESIZE=3 # 設(shè)置~/.bash_history文件中只保存3條歷史命令
history # 顯示之前用過(guò)的命令
!304
unalias cp # 取消別名
alias # 查看已經(jīng)設(shè)置的別名
whereis cd # 用來(lái)定位指令的二進(jìn)制程序,源代碼文件及man手冊(cè)頁(yè)的路徑
which chattr
# 文件描述符是由無(wú)符號(hào)整數(shù)表示的句柄憨攒,進(jìn)程使用它來(lái)標(biāo)識(shí)打開的文件世杀。
ulimit -n # 限制用戶對(duì)shell資源的訪問(wèn)
ulimit -n # 把當(dāng)前shell的文件描述符改為65535
軟件安裝卸載
# yum是在Fedora和redhat以及suse中基于rpm的軟件包管理器,
# 能夠從指定的服務(wù)器自動(dòng)下載rpm包并且安裝肝集,自動(dòng)處理依賴關(guān)系瞻坝。
yum grouplist # 顯示已安裝程序組
yum groupinstall # 安裝程序組
yum install tree -y # -y參數(shù)對(duì)所有的提問(wèn)都回答yes
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.lema.0312
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
yum makecache
# rpm是rpm軟件包的管理工具
rpm -ivh packagesname.rpm
rpm -qa|grep sql # 檢查是否安裝帶sql的軟件包
# apt-get是Debian Linux發(fā)行版中的apt軟件包管理工具。Debian軟件庫(kù)存在互聯(lián)網(wǎng)上的一些公共站點(diǎn)上杏瞻,
# /etc/apt/sources.list是存放這些地址列表的配置文件
進(jìn)程管理
# init進(jìn)程是所有Linux進(jìn)程的父進(jìn)程所刀,進(jìn)程號(hào)為1,系統(tǒng)中的第一個(gè)進(jìn)程
# ps報(bào)告當(dāng)前系統(tǒng)的進(jìn)程狀態(tài)
ps -e # 顯示所有程序
ps -ef |grep ssh # -f參數(shù)顯示UID,PPIP,C與STIME欄位
kill # 刪除執(zhí)行中的程序和工作
top # 實(shí)時(shí)查看系統(tǒng)狀態(tài)
htop # 類似于top
網(wǎng)絡(luò)管理
traceroute -n baidu.com
ping baidu.com # 執(zhí)行ping指令會(huì)使用ICMP傳輸協(xié)議捞挥,發(fā)出要求回應(yīng)的信息測(cè)試網(wǎng)絡(luò)連通性
ping www.baidu.com # ping二級(jí)域名對(duì)應(yīng)的服務(wù)器
禁止ping
echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf
sysctl -p # 從/etc/sysctl.conf加載內(nèi)核參數(shù)設(shè)置
ifconfig eth0 down # ifdown eth0 禁止指定的網(wǎng)絡(luò)接口eth0
ifconfig eth0 up # ifup eth0 激活網(wǎng)絡(luò)接口eth0
/etc/init.d/network restart
/etc/init.d/networking restart
chkconfig --list # 列出所有系統(tǒng)服務(wù)
chkconfig --list sshd # 查看ssh服務(wù)
chkconfig --level 3 sshd off # 關(guān)閉設(shè)置ssh在等級(jí)3為開機(jī)自啟動(dòng)服務(wù)
chkconfig --level 35 sshd on
dig @8.8.8.8 www.baidu.com +trace # 查詢DNS解析過(guò)程
nslookup # 查看域名解析結(jié)果
netstat -lntup # 查看開放的端口
lsof -i :22 # 已知端口22浮创,查看端口對(duì)應(yīng)的服務(wù)
系統(tǒng)管理
halt
shutdown -h 11:50
reboot
init 6 # 進(jìn)程初始化,切換到運(yùn)行等級(jí)6
runlevel # 查看當(dāng)前系統(tǒng)運(yùn)行的級(jí)別,總共有7個(gè)運(yùn)行級(jí)別
#0 停機(jī)(絕對(duì)不能把initdefault設(shè)置為0)
#1 單用戶模式
#2 多用戶砌函,沒(méi)有NFS
#3 完全多用戶模式
#4 未使用的
#5 x11(Xwindows)
#6 重新啟動(dòng)(絕對(duì)不能把initdefault設(shè)置為6)
ntpdate ntp.api.bz # 時(shí)間同步
date # 顯示系統(tǒng)時(shí)間
hwclock -w # 顯示硬件時(shí)鐘時(shí)間,-w參數(shù)與系統(tǒng)時(shí)鐘同步
uname -a # 打印當(dāng)前系統(tǒng)相關(guān)信息(內(nèi)核版本號(hào)斩披,硬件架構(gòu))
Linux localhost 2.6.32-504.el6.i686 #1 SMP Wed Oct 15 03:02:07 UTC 2014 i686 i686 i386 GNU/Linux
# 2表示主版本號(hào),有結(jié)構(gòu)性變化才更改讹俊,6表示次版本號(hào)垦沉,新增功能時(shí)才變化,
# 32表示對(duì)次版本的修訂次數(shù)或補(bǔ)丁包數(shù)仍劈,504代表編譯的次數(shù)厕倍,el代表企業(yè)版Linux
env # 顯示系統(tǒng)已存在的環(huán)境變量
df -h # 查看磁盤掛載信息
mount /dev/sda /home/lema
dd if=/dev/zero of=sun.txt bs=1M skip=1024 # 復(fù)制文件,skip跳過(guò)指定的區(qū)塊數(shù)
fsck # 當(dāng)文件系統(tǒng)發(fā)生錯(cuò)誤時(shí)贩疙,嘗試修復(fù)錯(cuò)誤
用戶和組管理
Linux通過(guò)UID和GID識(shí)別不同用戶不同組绑青,用戶分為3類诬像,超級(jí)用戶root,虛擬用戶uid1-499闸婴,普通用戶坏挠,虛擬用戶不能登陸不能使用
groupadd lema -g 506 # 為用戶組lema指定gid506
useradd lema -u 506 # 為用戶lema指定uid506
useradd lema -g qunzu -G fujia # -g指定群組,-G指定附加群組
passwd -l lema # 設(shè)置用戶lema不能更改密碼
userdel -r lema # 刪除用戶連同其家目錄文件
su lema # 切換用戶
useradd -s /sbin/nologin # 指定用戶登入后所使用的shell
useradd -M # 不要自動(dòng)建立用戶的登入目錄
id lema # 顯示用戶id和組id
lastlog
特殊字符
>重定向,>>追加重定向邪乍,<<追加輸入重定向降狠,<輸入重定向
標(biāo)準(zhǔn)輸入0,標(biāo)準(zhǔn)正常輸出1庇楞,標(biāo)準(zhǔn)錯(cuò)誤輸出2
echo "hhh" 1>./test.txt 2>./test2.txt
; 命令分割符榜配,cat test.txt;ls
&&,||
``,$()
{} touch {a,b,c}.txt
*所有
~ 家目錄
. 當(dāng)前目錄吕晌,.. 上級(jí)目錄
| 管道
其它
seq -s '/' 1 2 10 # 產(chǎn)生奇數(shù)列1/3/5/7/9
setup # 啟動(dòng)圖形界面設(shè)置系統(tǒng)配置服務(wù)
ln -s /root/test.txt /tmp/test2.txt # 對(duì)/root/test.txt做符號(hào)鏈接
ln /root/test.txt /tmp/xx.txt # 對(duì)/root/xx.txt做硬鏈接
符號(hào)鏈接文件只是指向了源文件的絕對(duì)路徑蛋褥,刪除或移動(dòng)重命名源文件符號(hào)鏈接文件都會(huì)失效,
硬鏈接文件相當(dāng)于為數(shù)據(jù)創(chuàng)建了一個(gè)新名字睛驳,源文件刪除烙心,只是刪除了一個(gè)名字,
數(shù)據(jù)并未刪除乏沸,和cp命令不同淫茵,硬鏈接文件具有相同的inode
mkdir -p ./a/b ./a/c && ls -l ./a
顯示./a的硬鏈接為4,a算一個(gè)蹬跃,. 算一個(gè)匙瘪,有兩個(gè) ..
echo -e "lema\nlema" # 解析轉(zhuǎn)義字符
md5sum /etc/passwd
lrzsz