linux 是后端項(xiàng)目運(yùn)行的環(huán)境,很多開發(fā)者都是在windows 下編寫代碼,后部署到linux 上運(yùn)行。所以linux 是很重要的基礎(chǔ),是開發(fā)人員需要了解的。學(xué)習(xí)資料參考
linux 起源
Unix、GUN、Linux起源, 追求先求有且能運(yùn)行,再求進(jìn)一步改善。linux 的版本是指內(nèi)核版本。linux 版本分為兩類,一種使用RPM 方式安裝軟件系統(tǒng),包括Red Hat、Fedora、SuSE、CentOS; 另外一種 dpkg 方式安裝軟件,包括 Debian、Ubuntu、B2D。linux 多用戶、多任務(wù),與Windows系統(tǒng)不同。文件的屬性可分為可讀,可寫,可執(zhí)行,屬性可分為文件擁有者、文件所屬用戶組、其他非擁有者與用戶組者。
linux的缺點(diǎn)是沒有特定的支持廠商,游戲支持度不夠、專業(yè)軟件的支持度不夠(如:繪圖軟件)。
文件權(quán)限
linux 是多人多任務(wù)的, 用戶的配置信息在etc/xx 下面。進(jìn)入文件夾要x 權(quán)限,r 只能查看文件夾的文件列表。linux 下面全部都是文件,文件沒有后綴,也有一些常見的 .sh、 .tar.gz 只是為了啟動見名知義, linux 各個目錄存放的規(guī)范詳見這里,比如安裝軟件一般放在usr/local 或者 opt
常用操作命令
# 查看環(huán)境變量
echo PATH
# 把目錄添加到系統(tǒng)環(huán)境變量,并保存
echo 'export PATH=/usr/local/wkhtmltox/bin:$PATH' >> /etc/profile
source /etc/profile
# which 在環(huán)境變量中查找文件, whereis 尋找特定文件速度快
which php
whereis php
# 刪除目錄下修改時間超過150天的文件
find /backup/backup -mtime +150 -name "dev_all_databases.*.sql.gz" -exec rm -f {} \;
# touch創(chuàng)建文件, mkdir 創(chuàng)建一級目錄,-p 連續(xù)創(chuàng)建a/b/c 目錄
touch test.php
mkdir a
mkdir -p a/b/c
# 查看文件
cat a.php
# 移動,第一條是改名,第二條移到b目錄下
mv a.php b.php
mv a.php b/
# 復(fù)制
cp a.php b.php
cp a.php b
cp -r a b/
# scp [A] [B] 把A機(jī)器的文件考到B機(jī)器上面,r把目錄a 拷貝得/web/dev 目錄下,直接覆蓋
scp P22 ~/Desktop/a.php ~/work@192.168.1.88:/web/dev/
scp -rP22 ~/Desktop/a ~/work@192.168.1.88:/web/dev/
# 刪除命令,生產(chǎn)環(huán)境慎用
rm -rf a.php
rm -rf a/*
# 修改文件或者目錄的擁有者和操作權(quán)限
chmod 755 a.php
chmod -R 755 a/
chown work:work php
chown -R work:work php
# 添加用戶、組
groupadd work
useradd -g work work
passwd work
文件的壓縮與打包
壓縮,文件用0,1 存儲后還有很多空間未填滿或者有很多重復(fù)數(shù)據(jù),將這些空間填滿或者減少空間就是壓縮技術(shù)的目的。比如數(shù)字1,由于 1byte = 8bits,其他7bits 默認(rèn)為0,第一位為1;比如重復(fù)有100 個1, 并不需要真正存儲100個1,標(biāo)記100個1,減少空間。
常用的壓縮命令有zip/tar,不同的壓縮命令用了不同的壓縮規(guī)則,所以解壓也要用相對應(yīng)的命令。
# z 代表用gzip 算法壓縮,c create 創(chuàng)建壓縮包,v view 是否顯示壓縮過程(一般不帶該參數(shù)),f代表文件
tar -zcvf a.tar.gz a/
# x 代表extract 提取,就是解壓到當(dāng)前目錄
tar -zxvf a.tar.gz
# -C 解壓到b目錄下
tar -zxvf a.tar.gz -C b/
項(xiàng)目中常用命令
# 查看進(jìn)程是否運(yùn)行
ps -aux | grep nginx
# 查看端口號被那個進(jìn)程占用
netstat -anp | grep 9000
# mac 下的命令
lsof -i:9000
# 監(jiān)聽日志
tail -f a.log
# 前十條命令
history | head -n 10
# 分析當(dāng)前目錄各文件大小,并排序。在打包遷移目錄是非常常用
# a all 全部文件,h human-readable 對人友好的方式展示
du -ah --max-depth=1 | sort -h
# 觀察分區(qū)大小,在清理磁盤是很常用
df -ah
# a.php文件軟連接到b標(biāo)識
ln -s a.php b
# mount 這樣直接操作b目錄就能操作分區(qū)
mount [磁盤分區(qū)] b
查看系統(tǒng)參數(shù)的命令
# 查看內(nèi)核/操作系統(tǒng)/CPU信息
uname -a
# 查看操作系統(tǒng)版本
head -n 1 /etc/issue
lsb_release -a
# /proc 目錄下面很多系統(tǒng)屬性文件,查看CPU信息
cat /proc/cpuinfo
# 查看計(jì)算機(jī)名
hostname
# 查詢當(dāng)前系統(tǒng)的centos版本號$releasever、cpu指令集$basearch,在安裝軟件時很常用
rpm -qi centos-release
安裝軟件
在linux 下安裝軟件是必須掌握的技能,安裝方式一般有yum install,直接安裝rmp包,編譯安裝源碼包等方式。yum install 原理。先查看當(dāng)前yum 源有沒有可用的安裝包。
# 列出可用的 rpm 包
yum list | grep 包名
yum rearch 包名
# 刪除
yum remove xx
以安裝Nginx 為例子展示一下過程
# 比如增加yum repo,安裝nginx version: nginx/1.21.0
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
# 當(dāng)前系統(tǒng)的centos 版本號$releasever、cpu指令集$basearch
rpm -qi centos-release
# 地址換成,并加到 /etc/yum.repos.d/nginx.repo
baseurl=http://nginx.org/packages/centos/7/x86_64
# 如果有緩存就清除緩存
yum clean all
# 查看該yum repo 能安裝的Nginx 版本有那些
yum list nginx --showduplicates
# 選擇想安裝的版本
yum install nginx-1.10.2
nginx -v
- 源碼編譯安裝,比如 centos 安裝 git 工具,源碼下載
# 解壓 .tar.xz 或者 .tar.gz
tar -Jxvf git-2.9.5.xz -C .
# 源碼安裝先配置安裝目錄,有助后期卸載、遷移
./configure prefix=/usr/local/git-2.9.5
# 編譯安裝
make && make install
# 一般再設(shè)置一個git 軟連接,安裝軟件的習(xí)慣
ln -s git-2.9.5 git
# 添加環(huán)境變量
export "PATH=/usr/local/git/bin:$PATH" >> /etc/profile
source /etc/profile
文本處理技巧
在linux 編輯文本是很常見的操作,比如修改配置文件、查看項(xiàng)目日志、處理文件數(shù)據(jù)、編寫shell script 等等,這些都要用文本處理。編寫文本一般用vim 編輯器,vim 有三種狀態(tài),點(diǎn)擊esc 普通模式,i 進(jìn)入編輯模式,冒號進(jìn)入命令行模式。
:q! 放棄修改
:wq 或者 :x 保存文件并退出vim 。
# 撤銷、恢復(fù),普通模式下
u 點(diǎn)擊一次恢復(fù)上一步
ctr+r 恢復(fù)
# 顯示取消行號
:set number
:set nonumber
# 復(fù)制,刪除。普通模式下
yy 復(fù)制當(dāng)前行至存儲緩沖區(qū)
nyy 復(fù)制n行到緩沖區(qū)
p 在當(dāng)前行之后黏貼緩沖區(qū)中的內(nèi)容
dd 刪除行,并把改行放在暫存區(qū)
dnd 刪除n行
dG 刪除當(dāng)前行到最后一行
# 移動光標(biāo),普通模式下
^ 首
$ 尾
G 最后一行
# 查找,普通模式下輸入/a (a 是想搜索的內(nèi)容)
n 下一個
N 上一個
# 替換
# 檢索第一個 “a” 字符串并將其替換成 “b”,g代表檢索并將所有
:%s/a/b
:%s/a/b/g
# 檢索出所有的 “a” 字符串,在替換成 “b” 前,先詢問是否替換
:%s/a/b/gc
# 注釋
# v模式多行編輯
1. Ctrl+v進(jìn)入v模式
2. 上下方向鍵選中要注釋的行
3. shift+i(即大寫的I)行首插入
4. 輸入注釋符//
5. 按esc返回
# 反注釋
1. Ctrl+v進(jìn)入v模式
2. 上下方向鍵選中要注釋的行,左右鍵選擇要刪除的字符//
3. 按d刪除
crontab 定時任務(wù)
任務(wù)列表有用戶屬性,不用reload crontab,它本身每分鐘就會讀取一下任務(wù)列表。
# 針對當(dāng)前用戶,如work/root
# 編輯當(dāng)前用戶的定時任務(wù)列表
crontab -e
# 輸出當(dāng)前用戶的定時任務(wù)
crontab -l
# crontab 基本語法
*/10 * * * * 每隔10分 執(zhí)行
比如用定時任務(wù)調(diào)整服務(wù)器時間
# 借助定時任務(wù)調(diào)整時間
*/10 * * * * /usr/sbin/ntpdate -u ntp5.aliyun.com
性能分析命令
補(bǔ)充
文本三劍客grep/sed/awk
補(bǔ)充
歡迎大家給我留言,提建議,指出錯誤,一起討論學(xué)習(xí)技術(shù)的感受!