# Git
## Gitæ¦è¿°
### çæ¬ç³»ç»
SVN æ¯éä¸å¼çæ¬æ§å¶ç³»ç»ï¼çæ¬åºæ¯é䏿¾å¨ä¸å¤®æå¡å¨çï¼èå¼å人åå·¥ä½çæ¶åï¼ç¨ç齿¯èªå·±ççµèï¼æä»¥é¦å
è¦ä»ä¸å¤®æå¡å¨ä¸è½½ææ°ççæ¬ï¼ç¶åå¼åï¼å¼åå®åï¼éè¦æèªå·±å¼åçä»£ç æäº¤å°ä¸å¤®æå¡å¨ã
éä¸å¼çæ¬æ§å¶å·¥å
·ç¼ºç¹ï¼æå¡å¨åç¹æ
éã容鿧差
Git æ¯åå¸å¼çæ¬æ§å¶ç³»ç»ï¼Distributed Version Control Systemï¼ç®ç§° DVCSï¼ ï¼å为两ç§ç±»åçä»åºï¼
æ¬å°ä»åºåè¿ç¨ä»åºï¼
* æ¬å°ä»åºï¼æ¯å¨å¼å人åèªå·±çµèä¸çGitä»åº
* è¿ç¨ä»åºï¼æ¯å¨è¿ç¨æå¡å¨ä¸çGitä»åº
***
### 工使µç¨
1ï¼ä»è¿ç¨ä»åºä¸å
é代ç å°æ¬å°ä»åº
2ï¼ä»æ¬å°ä»åºä¸ checkout 代ç ç¶åè¿è¡ä»£ç ä¿®æ¹
3ï¼å¨æäº¤åå
å°ä»£ç æäº¤å°**æååº**
4ï¼æäº¤å°æ¬å°ä»åºãæ¬å°ä»åºä¸ä¿åä¿®æ¹çå个åå²çæ¬
5ï¼ä¿®æ¹å®æåï¼éè¦åå¢éæåå
±äº«ä»£ç æ¶ï¼å°ä»£ç pushå°è¿ç¨ä»åº
### Gitå®è£
ä¸è½½å°åï¼
ç§»å¨è®¾å¤æä½ç³»ç»ï¼

***
## Linuxç³»ç»
### ç³»ç»ä»ç»
ä»å
å°ä½ä¾æ¬¡æ¯ç¡¬ä»¶--å
æ ¸å±--Shellå±--åºç¨å±--ç¨æ·

å
æ ¸å±ï¼
æ ¸å¿ååºç¡ï¼éçå¨ç¡¬ä»¶å¹³å°ä¸ï¼æ§å¶å管çç³»ç»å
çåç§èµæºï¼ææçç»ç»è¿ç¨çè¿è¡ï¼æ©å±ç¡¬ä»¶çåè½ï¼æé«èµæºå©ç¨æçï¼ä¸ºç¨æ·æä¾å®å
¨å¯é çåºç¨ç¯å¢ã
Shellå±ï¼
Shell 屿¯ä¸ç¨æ·ç´æ¥äº¤äºççé¢ãç¨æ·å¯ä»¥å¨æç¤ºç¬¦ä¸è¾å
¥å½ä»¤è¡ï¼ç± Shell è§£éæ§è¡å¹¶è¾åºç¸åºç»ææè
æå
³ä¿¡æ¯ï¼æä»¥æä»¬ä¹æ Shell ç§°ä½å½ä»¤è§£éå¨ï¼å©ç¨ç³»ç»æä¾ç丰å¯å½ä»¤å¯ä»¥å¿«æ·èç®ä¾¿å°å®æè®¸å¤å·¥ä½ã
****
### æä»¶ç³»ç»
Linux æä»¶ç³»ç»ç®å½ç»æåçç¥ç windows ç³»ç»æè¾å¤§åºå«ï¼æ²¡æåç§çç¬¦çæ¦å¿µãæ ¹ç®å½åªæä¸ä¸ª/ï¼éç¨å±çº§å¼çæ ç¶ç®å½ç»æã

/ï¼æ ¹ç®å½ï¼ææçç®å½ãæä»¶ã设å¤é½å¨/ä¹ä¸ï¼/å°±æ¯ Linux æä»¶ç³»ç»çç»ç»è
ï¼ä¹æ¯æä¸çº§çé¢å¯¼è
ã
/binï¼bin å°±æ¯äºè¿å¶ï¼binaryï¼è±æç¼©åãå¨ä¸è¬çç³»ç»å½ä¸ï¼é½å¯ä»¥å¨è¿ä¸ªç®å½ä¸æ¾å° linux 常ç¨çå½ä»¤ãç³»ç»æéè¦çé£äºå½ä»¤ä½äºæ¤ç®å½ã
/bootï¼Linux çå
æ ¸åå¼å¯¼ç³»ç»ç¨åºæéè¦çæä»¶ç®å½ã
/devï¼dev æ¯è®¾å¤ï¼device)çè±æç¼©åãè¿ä¸ªç®å½å¯¹ææçç¨æ·é½ååéè¦ãå 为å¨è¿ä¸ªç®å½ä¸å
å«äºææ linux ç³»ç»ä¸ä½¿ç¨çå¤é¨è®¾å¤ã使¯è¿é并䏿¯æ¾çå¤é¨è®¾å¤ç驱å¨ç¨åºãè¿ä¸ç¹å常ç¨ç windows,dos æä½ç³»ç»ä¸ä¸æ ·ãå®å®é
䏿¯ä¸ä¸ªè®¿é®è¿äºå¤é¨è®¾å¤ç端å£ãå¯ä»¥é常æ¹ä¾¿å°å»è®¿é®è¿äºå¤é¨è®¾å¤ï¼å访é®ä¸ä¸ªæä»¶ï¼ä¸ä¸ªç®å½æ²¡æä»»ä½åºå«ã
/**home**ï¼å¦æå»ºç«ä¸ä¸ªç¨æ·ï¼ç¨æ·åæ¯"xx",é£ä¹å¨/home ç®å½ä¸å°±æä¸ä¸ªå¯¹åºç
/home/xx è·¯å¾ï¼ç¨æ¥åæ¾ç¨æ·ç主ç®å½ãå®¶ç®å½
/libï¼lib æ¯åºï¼libraryï¼è±æç¼©åãè¿ä¸ªç®å½æ¯ç¨æ¥åæ¾ç³»ç»å¨æè¿æ¥å
±äº«åºçãå 乿æçåºç¨ç¨åºé½ä¼ç¨å°è¿ä¸ªç®å½ä¸çå
±äº«åºãå æ¤ï¼åä¸ä¸è¦è½»æå¯¹è¿ä¸ªç®å½è¿è¡ä»ä¹æä½ï¼ä¸æ¦åçé®é¢ï¼ç³»ç»å°±ä¸è½å·¥ä½äºã
/**proc**ï¼åå¨çæ¯å½åå
æ ¸è¿è¡ç¶æçä¸ç³»åç¹æ®æä»¶ï¼ç¨æ·å¯ä»¥éè¿è¿äºæä»¶æ¥çæå
³ç³»ç»ç¡¬ä»¶åå½åæ£å¨è¿è¡è¿ç¨çä¿¡æ¯ï¼çè³å¯ä»¥éè¿æ´æ¹å
¶ä¸æäºæä»¶æ¥æ¹åå
æ ¸çè¿è¡ç¶æãæ¤å¤è¿æ**/srv /sys** ä¸ä¸ªç®å½ï¼å
æ ¸ç¸å
³ç®å½ï¼ä¸è¦å¨ã
/**root**ï¼Linux è¶
级æéç¨æ· root çå®¶ç®å½ã
/sbinï¼è¿ä¸ªç®å½æ¯ç¨æ¥åæ¾ç³»ç»ç®¡çåçç³»ç»ç®¡çç¨åºã大夿¯æ¶åç³»ç»ç®¡ççå½ä»¤çåæ¾ï¼æ¯è¶
级æéç¨æ· root ç坿§è¡å½ä»¤åæ¾å°ï¼æ®éç¨æ·æ æéæ§è¡è¿ä¸ªç®å½ä¸çå½ä»¤ï¼sbin ä¸å
å«ç齿¯ root æéæè½æ§è¡çã
/var/log
/**usr**ï¼è¿æ¯ linux ç³»ç»ä¸å ç¨ç¡¬çç©ºé´æå¤§çç®å½ã**ç¨æ·çå¾å¤åºç¨ç¨åºåæä»¶é½åæ¾å¨è¿ä¸ªç®å½ä¸**ã Unix software resource usrã类似 windows ç³»ç»ç program files
/usr/localï¼è¿é主è¦åæ¾é£äºæå¨å®è£
ç软件ï¼å³ä¸æ¯éè¿æ apt-get å®è£
ç软件ãå®å/usr ç®å½å
·æç¸ç±»ä¼¼çç®å½ç»æã
/usr/share ï¼ç³»ç»å
±ç¨çä¸è¥¿åæ¾å°ï¼æ¯å¦ /usr/share/fonts æ¯åä½ç®å½ï¼/usr/share/docå/usr/share/man 叮婿件ã
/etcï¼ç®¡çææçé
ç½®æä»¶çç®å½ï¼æ¯å¦å®è£
mysql çé
ç½®æä»¶my.conf
/mntï¼å¯ä¾ç³»ç»ç®¡çå使ç¨ï¼æå¨æè½½ä¸äºä¸´æ¶è®¾å¤åªä½è®¾å¤çç®å½ã
/mediaï¼æ¯èªå¨æè½½çç®å½ã彿 U çæå
¥å°ç³»ç»ä¸ï¼ä¼èªå¨æè½½å°è¯¥ç®å½ä¸ãæ¯å¦æå
¥ä¸ä¸ª U çï¼ä¼èªå¨å°/media ç®å½ä¸æè½½ã
/optï¼é¢å¤å®è£
è½¯ä»¶åæ¾çç®å½ãæ¯å¦ mysql çå®è£
å
å°±å¯ä»¥æ¾å¨è¯¥ç®å½ã
***
## è¿ç¨è¿æ¥
### 设置IP
#### NAT
é¦å
è®¾ç½®èææºä¸ NAT 模å¼çéé¡¹ï¼æå¼ VMwareï¼ç¹å»âç¼è¾âä¸çâèæç½ç»ç¼è¾å¨âï¼è®¾ç½® NAT åæ°

**注æ**ï¼VMware Network Adapter VMnet8 ä¿è¯æ¯å¯ç¨ç¶æ
â 
#### éæIP
卿®éç¨æ·ä¸ä¸è½ä¿®æ¹ç½å¡çé
置信æ¯ï¼æä»¥æä»¬è¦åæ¢å° root ç¨æ·è¿è¡ ip é
ç½®ï¼su root/su
* ä¿®æ¹ç½å¡é
ç½®æä»¶ï¼`vim /etc/sysconfig/network-scripts/ifcfg-ens33`
* ä¿®æ¹æä»¶å
容
```sh
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=10.2.111.62
NETMASK=255.255.252.0
GATEWAY=10.2.111.254
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=2c2371f1-ef29-4514-a568-c4904bd11c82
DEVICE=ens33
ONBOOT=true
###########################
BOOTPROTO设置为éæstatic
IPADDR设置ipå°å
NETMASK设置åç½æ©ç
GATEWAY设置ç½å
³
ONBOOT设置为trueå¨ç³»ç»å¯å¨æ¶æ¯å¦æ¿æ´»ç½å¡
æ§è¡ä¿å :wq!
```
* éå¯ç½ç»ï¼systemctl restart network
* æ¥çIPï¼ifconfig
* å®¿ä¸»æº ping èææºï¼èææº ping 宿主æº
* å¨èææºä¸è®¿é®ç½ç»ï¼éè¦å¢å ä¸å NAT ç½å¡
* ãèææºã--ã设置ã--ãæ·»å ã
*
***
### è¿ç¨ç»é
**æå¡å¨ç»´æ¤å·¥ä½** 齿¯å¨ è¿ç¨ éè¿ SSH 客æ·ç«¯ æ¥å®æçï¼ å¹¶æ²¡æå¾å½¢çé¢ï¼ ææçç»´æ¤å·¥ä½é½éè¦éè¿å½ä»¤æ¥å®æï¼Linux æå¡å¨éè¦å®è£
SSH ç¸å
³æå¡ã
é¦å
æ§è¡ sudo apt-get install openssh-server æä»¤ãæ¥ä¸æ¥ç¨ xshell è¿æ¥ã

å
ç¨æ®éç¨æ·ç»å½ï¼ç¶å转æ root
***
## ç¨æ·ç®¡ç
Linux ç³»ç»æ¯ä¸ä¸ªå¤ç¨æ·ãå¤ä»»å¡çæä½ç³»ç»ãå¤ç¨æ·æ¯æå¨ linux æä½ç³»ç»ä¸å¯ä»¥å建å¤ä¸ªç¨æ·ï¼èè¿äºå¤ç¨æ·åå¯ä»¥åæ¶æ§è¡åèªä¸åçä»»å¡ï¼èäºä¸å½±åãå windows ç³»ç»æå¾å¤§åºå«ã
å¨ Linux ç³»ç»ä¸ï¼ä¼åå¨ç以ä¸å 个æ¦å¿µï¼
* ç¨æ·åï¼ç¨æ·çåç§°
* ç¨æ·æå±çç»ï¼å½åç¨æ·æå±çç»ã
* ç¨æ·çå®¶ç®å½ï¼å½åè´¦å·ç»å½æåä¹åçç®å½ï¼å°±å«åè¯¥ç¨æ·çå®¶ç®å½
### ç¨æ·ç®¡ç
#### å½åç¨æ·
lognameï¼ç¨äºæ¾ç¤ºç®åç¨æ·çåç§°
* --help ãå¨çº¿å¸®å©ã
* --vesion ãæ¾ç¤ºçæ¬ä¿¡æ¯ã
#### åæ¢ç¨æ·
su UserNameï¼åæ¢ç¨æ·
su -c comman rootï¼åæ¢ç¨æ·ä¸º root 并卿§è¡ comman æä»¤åéåºè¿åå使ç¨è
suï¼åæ¢å°rootç¨æ·
#### ç¨æ·æ·»å
å½ä»¤ï¼useradd [options] ç¨æ·å
åæ°è¯´æï¼
* é项
* -c comment æå®ä¸æ®µæ³¨éæ§æè¿°ã
* -d æå®ç¨æ·ä¸»ç®å½ï¼å¦ææ¤ç®å½ä¸åå¨ï¼ååæ¶ä½¿ç¨-mé项ï¼å¯ä»¥å建主ç®å½ã
* -m åå»ºç¨æ·ç主ç®å½ã
* -g ç¨æ·ç» æå®ç¨æ·æå±çç¨æ·ç»ï¼-g ç»å ç¨æ·åã
* -G ç¨æ·ç»ï¼ç¨æ·ç» æå®ç¨æ·æå±çéå ç»ã
* -s Shellæä»¶ æå®ç¨æ·çç»å½Shellã
* -u ç¨æ·å· æå®ç¨æ·çç¨æ·å·ï¼å¦æåæ¶æ-oé项ï¼åå¯ä»¥éå¤ä½¿ç¨å
¶ä»ç¨æ·çæ è¯å·ã
* ç¨æ·å
æå®æ°è´¦å·çç¨æ·å(åç»æä»¬å¯ä»¥ä½¿ç¨è¿ä¸ªç¨æ·åè¿è¡ç³»ç»ç»å½)ã
å¦ä½ç¥éæ·»å ç¨æ·æåå¢ï¼ éè¿æä»¤ cat /etc/passwd æ¥ç
```
seazean:x: 1000:1000:Seazean:/home/seazean:/bin/bash
ç¨æ·å å¯ç ç¨æ·ID ç»ID 注é å®¶ç®å½ shellç¨åº
```
useradd -m Usernameæ°å»ºç¨æ·æåä¹åï¼ä¼å»ºç«å®¶ç®å½ï¼ä½æ¯æ¤æ¶æé®é¢æ²¡ææå® shell ççæ¬ï¼ä¸æ¯æä»¬çç¥ç bashï¼åè½ä¸æå¾å¤éå¶ã**sudo useradd -m -s /bin/bash Username**
#### ç¨æ·å¯ç
ç³»ç»å®è£
好é»è®¤ç root ç¨æ·æ¯æ²¡æå¯ç çï¼éè¦ç» root 设置ä¸ä¸ªå¯ç **sudo passwd root**.
* æ®éç¨æ·ï¼**sudo passwd UserName**ã
* 管çåç¨æ·ï¼passwd [options] UserName
* -l éå®å¯ç ï¼å³ç¦ç¨è´¦å·ã
* -u å¯ç è§£éã
* -d ä½¿è´¦å·æ å¯ç ã
* -f å¼ºè¿«ç¨æ·ä¸æ¬¡ç»å½æ¶ä¿®æ¹å¯ç ã
#### ç¨æ·æé
usermod å½ä»¤éè¿ä¿®æ¹ç³»ç»å¸æ·æä»¶æ¥ä¿®æ¹ç¨æ·è´¦æ·ä¿¡æ¯
ä¿®æ¹ç¨æ·è´¦å·å°±æ¯æ ¹æ®å®é
æ
嵿´æ¹ç¨æ·çæå
³å±æ§ï¼å¦ç¨æ·å·ã主ç®å½ãç¨æ·ç»ãç»å½Shellçã
* æ®éç¨æ·ï¼sudo usermod [options] Username
* 管çåç¨æ·ï¼usermod [options] Username
* usermod **-l** newName Username
* -l æ°çç»å½åç§°
#### ç¨æ·å é¤
å é¤ç¨æ·è´¦å·å°±æ¯è¦å°/etc/passwdçç³»ç»æä»¶ä¸çè¯¥ç¨æ·è®°å½å é¤ï¼å¿
è¦æ¶è¿å é¤ç¨æ·ç主ç®å½ã
* æ®éç¨æ·ï¼sudo userdel [options] Username
* 管çåç¨æ·ï¼userdel [options] Username
* -fï¼å¼ºå¶å é¤ç¨æ·ï¼å³ä½¿ç¨æ·å½åå·²ç»å½;
* -rï¼å é¤ç¨æ·çåæ¶ï¼å é¤ä¸ç¨æ·ç¸å
³çæææä»¶
***
### ç¨æ·ç»ç®¡ç
å¼åç»ï¼æµè¯ç»ï¼ç
#### ç»ç®¡ç
æ·»å ç»ï¼**groupadd ç»å**
â åå»ºç¨æ·çæ¶å å
¥ç»ï¼useradd -m -g ç»å ç¨æ·å
â
#### æ·»å ç¨æ·ç»
æ°å¢ä¸ä¸ªç¨æ·ç»ï¼ç»åå¯è§åç¥æï¼ç¬¦åè§èå³å¯ï¼ï¼ç¶åå°ç¨æ·æ·»å å°ç»ä¸
**使ç¨è
æéï¼ç®¡çåç¨æ·**
å½ä»¤ï¼groupadd [options] Groupname
* -g GIDæå®æ°ç¨æ·ç»çç»æ è¯å·ï¼GIDï¼
* -o ä¸è¬ä¸-géé¡¹åæ¶ä½¿ç¨ï¼è¡¨ç¤ºæ°ç¨æ·ç»çGIDå¯ä»¥ä¸ç³»ç»å·²æç¨æ·ç»çGIDç¸å
æ°å¢ç¨æ·ç»Seazeanï¼groupadd Seazean
#### ä¿®æ¹ç¨æ·ç»
**使ç¨è
æéï¼ç®¡çåç¨æ·**
å½ä»¤ï¼groupmod [options] Groupname
- -g GID ä¸ºç¨æ·ç»æå®æ°çç»æ è¯å·ã
- -o ä¸-géé¡¹åæ¶ä½¿ç¨ï¼ç¨æ·ç»çæ°GIDå¯ä»¥ä¸ç³»ç»å·²æç¨æ·ç»çGIDç¸åã
- -n æ°ç¨æ·ç» å°ç¨æ·ç»çååæ¹ä¸ºæ°åå
ä¿®æ¹Seazeanç»å为zhyï¼groupmod -n zhy Seazean
#### å é¤ç¨æ·ç»
* æ®éç¨æ·ï¼sudo groupdel Groupname
* 管çåç¨æ·ï¼groupdel Groupname
* -f ç¨æ·ç主ç»ä¹ç»§ç»å é¤
* -h æ¾ç¤ºå¸®å©ä¿¡æ¯
#### ç¨æ·æå±ç»
æ¥è¯¢ç¨æ·æå±ç»ï¼groups Username
æ¥çç¨æ·åç»ä¿¡æ¯ï¼id Username
åå»ºç¨æ·çæ¶å å
¥ç»ï¼useradd -m -g Groupname Username
ä¿®æ¹ç¨æ·æå±ç»ï¼usermod -g Groupname Username
usermod常ç¨é项ï¼
* -d ç¨æ·çæ°ä¸»ç®å½
* -l æ°çç»å½åç§°
#### gpasswd
gpasswd æ¯ Linux å·¥ä½ç»æä»¶ /etc/group å /etc/gshadow 管çå·¥å
·ï¼ç¨äºå°ä¸ä¸ªç¨æ·æ·»å å°ç»æä»ç»ä¸å é¤
å½ä»¤ï¼gpasswd é项 Username Groupname
* -a åç» GROUP 䏿·»å ç¨æ· USER
* -d ä»ç» GROUP 䏿·»å æå é¤ç¨æ·
**æ¥çç¨æ·ç»ä¸ææç¨æ·ï¼ææç¨æ·ï¼**ï¼grep 'Groupname' /etc/group
***
## ç³»ç»ç®¡ç
### man
卿§å¶å°è¾å
¥ï¼å½ä»¤å -h/ -help/ --h /空
å¯ä»¥çå°å½ä»¤çå¸®å©ææ¡£
**man** [æä»¤åç§°] æ¥çå¸®å©ææ¡£
æ¯å¦ man lsãéåºæ¹å¼ q
***
### date
date å¯ä»¥ç¨æ¥æ¾ç¤ºæè®¾å®ç³»ç»çæ¥æä¸æ¶é´
å½ä»¤ï¼date [options]
* -d<å符串>ï¼æ¾ç¤ºå符串ææçæ¥æä¸æ¶é´ãå符串ååå¿
é¡»å ä¸åå¼å·ï¼
* -s<å符串>ï¼æ ¹æ®å符串æ¥è®¾ç½®æ¥æä¸æ¶é´ãå符串ååå¿
é¡»å ä¸åå¼å·
* -uï¼æ¾ç¤ºGMTï¼
* --versionï¼æ¾ç¤ºçæ¬ä¿¡æ¯
æ¥çæ¶é´ï¼**date** ------->2020å¹´ 11æ 30æ¥ ææä¸ 17:10:54 CST
æ¥çæå®æ ¼å¼æ¶é´ï¼**date "+%Y-%m-%d %H:%M:%S"** -----> 2020-11-30 17:11:44
è®¾ç½®æ¥ææä»¤ï¼**date -s â2019-12-23 19:21:00â**
***
### id
id伿¾ç¤ºç¨æ·ä»¥åæå±ç¾¤ç»çå®é
䏿æIDãè¥ä¸¤ä¸ªIDç¸åï¼åä»
æ¾ç¤ºå®é
IDãè¥ä»
æå®ç¨æ·åç§°ï¼åæ¾ç¤ºç®åç¨æ·çIDã
å½ä»¤ï¼id [-gGnru] [--help] [--version] [ç¨æ·åç§°] //åæ°ç顺åº
- -gæ--group ãæ¾ç¤ºç¨æ·æå±ç¾¤ç»çIDã
- -Gæ--groups ãæ¾ç¤ºç¨æ·æå±éå 群ç»çIDã
- -næ--name ãæ¾ç¤ºç¨æ·ï¼æå±ç¾¤ç»æéå 群ç»çåç§°ã
- -ræ--real ãæ¾ç¤ºå®é
IDã
- -uæ--user ãæ¾ç¤ºç¨æ·IDã
> idå½ä»¤åæ°è½ç¶å¾å¤,使¯å¸¸ç¨çæ¯ä¸å¸¦åæ°çidå½ä»¤ï¼ä¸»è¦çä»çuidåç»ä¿¡æ¯
***
### sudo
sudoï¼æ§å¶ç¨æ·å¯¹ç³»ç»å½ä»¤çä½¿ç¨æé,rootå
许çæä½ãéè¿sudoå¯ä»¥æé«æ®éç¨æ·çæä½æé
- -V æ¾ç¤ºçæ¬ç¼å·
- -h 伿¾ç¤ºçæ¬ç¼å·åæä»¤çä½¿ç¨æ¹å¼è¯´æ
- -l æ¾ç¤ºåºèªå·±ï¼æ§è¡ sudo ç使ç¨è
ï¼çæé
- -v å 为 sudo å¨ç¬¬ä¸æ¬¡æ§è¡æ¶ææ¯å¨ N åéå
æ²¡ææ§è¡ï¼N é¢è®¾ä¸ºäºï¼ä¼é®å¯ç ï¼è¿ä¸ªåæ°æ¯éæ°å䏿¬¡ç¡®è®¤ï¼å¦æè¶
è¿ N åéï¼ä¹ä¼é®å¯ç
- -k å°ä¼å¼ºè¿«ä½¿ç¨è
å¨ä¸ä¸æ¬¡æ§è¡ sudo æ¶è¯¢é®å¯ç ï¼ä¸è®ºææ²¡æè¶
è¿ N åéï¼
- -b å°è¦æ§è¡çæä»¤æ¾å¨èæ¯æ§è¡
- -p prompt å¯ä»¥æ´æ¹é®å¯ç çæç¤ºè¯ï¼å
¶ä¸ %u ä¼ä»£æ¢ä¸ºä½¿ç¨è
çå¸å·åç§°ï¼ %h 伿¾ç¤ºä¸»æºåç§°
- -u username/#uid ä¸å æ¤åæ°ï¼ä»£è¡¨è¦ä»¥ root ç身份æ§è¡æä»¤ï¼èå äºæ¤åæ°ï¼å¯ä»¥ä»¥ username ç身份æ§è¡æä»¤ï¼#uid 为该 username ç使ç¨è
å·ç ï¼
- -s æ§è¡ç¯å¢åæ°ä¸ç SHELL ææå®ç shell ï¼ææ¯ /etc/passwd éææå®ç shell
- -H å°ç¯å¢åæ°ä¸ç HOME æå®ä¸ºè¦åæ´èº«ä»½ç使ç¨è
HOMEç®å½ï¼å¦ä¸å -u åæ°å°±æ¯ç³»ç»ç®¡çè
root ï¼
- -command è¦ä»¥ç³»ç»ç®¡çè
èº«ä»½ï¼æä»¥ -u æ´æ¹ä¸ºå
¶ä»äººï¼æ§è¡çæä»¤
**sudo -u root command -l**ï¼æå®rootç¨æ·æ§è¡æä»¤command
***
### top
topï¼ç¨äºå®æ¶æ¾ç¤º process ç卿
* -cï¼command屿§è¿è¡äºå½ä»¤è¡¥å
¨
* -p è¿ç¨å·ï¼æ¾ç¤ºæå®pidçè¿ç¨ä¿¡æ¯
* -d ç§æ°ï¼è¡¨ç¤ºè¿ç¨ç颿´æ°æ¶é´ï¼æ¯å ç§å·æ°ä¸æ¬¡ï¼
* -H è¡¨ç¤ºçº¿ç¨æ¨¡å¼
`top -Hp è¿ç¨id`ï¼åæè¯¥è¿ç¨å
å线ç¨çcpuä½¿ç¨æ
åµ

**åè¿ç¨ï¼ä»»å¡ï¼çç¶æçæ§å±æ§è§£é说æï¼**
PID â è¿ç¨id
TID â 线ç¨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 â è¿ç¨åç§°ï¼å½ä»¤å/å½ä»¤è¡ï¼
***
### ps
Linux ç³»ç»ä¸æ¥çè¿ç¨ä½¿ç¨æ
åµçå½ä»¤æ¯ ps æä»¤
å½ä»¤ï¼ps
* -e: æ¾ç¤ºææè¿ç¨
* -f: å
¨æ ¼å¼
* a: æ¾ç¤ºç»ç«¯ä¸çææè¿ç¨
* u: ä»¥ç¨æ·çæ ¼å¼æ¥æ¾ç¤ºè¿ç¨ä¿¡æ¯
* x: æ¾ç¤ºåå°è¿è¡çè¿ç¨
* -Tï¼å¼å¯çº¿ç¨æ¥ç
* -pï¼æå®çº¿ç¨å·
ä¸è¬å¸¸ç¨æ ¼å¼ä¸º ps -ef æè
ps aux 两ç§ãæ¾ç¤ºçä¿¡æ¯å¤§ä½ä¸è´ï¼ç¥æåºå«
两è
åºå«ï¼
å¦ææ³æ¥çè¿ç¨ç CPU å ç¨çåå
åå ç¨çï¼å¯ä»¥ä½¿ç¨ aux
å¦ææ³æ¥çè¿ç¨çç¶è¿ç¨ ID å宿´ç COMMAND å½ä»¤ï¼å¯ä»¥ä½¿ç¨ ef
`ps -T -p
ä»å·¦è³å³ç¨0-9è¿äºæ°åæ¥è¡¨ç¤ºï¼
第0ä½ç¡®å®æä»¶ç±»åï¼ç¬¬1-3ä½ç¡®å®å±ä¸»ï¼è¯¥æä»¶çææè
ï¼æ¥æè¯¥æä»¶çæéã
第4-6ä½ç¡®å®å±ç»ï¼ææè
çåç»ç¨æ·ï¼æ¥æè¯¥æä»¶çæéï¼
第7-9ä½ç¡®å®å
¶ä»ç¨æ·æ¥æè¯¥æä»¶çæéã
å
¶ä¸ï¼ç¬¬1ã4ã7ä½è¡¨ç¤ºè¯»æéï¼å¦æç¨"r"å符表示ï¼åæè¯»æéï¼å¦æç¨"-"å符表示ï¼å没æè¯»æéï¼ç¬¬2ã5ã8ä½è¡¨ç¤ºåæéï¼å¦æç¨"w"å符表示ï¼åæåæéï¼å¦æç¨"-"å符表示没æåæéï¼ç¬¬3ã6ã9ä½è¡¨ç¤ºå¯æ§è¡æéï¼å¦æç¨"x"å符表示ï¼åææ§è¡æéï¼å¦æç¨"-"å符表示ï¼åæ²¡ææ§è¡æéã
#### æä»¶ä¿¡æ¯
> 对äºä¸ä¸ªæä»¶æ¥è¯´ï¼å®é½æä¸ä¸ªç¹å®çææè
ï¼ä¹å°±æ¯å¯¹è¯¥æä»¶å
·ææææçç¨æ·ãä¹å°±æ¯æè°çå±ä¸»ï¼å®å±äºåªä¸ªç¨æ·çææãé¤äºå±ä¸»ï¼è¿æå±ç»ï¼ä¹å°±æ¯è¯´ï¼è¿ä¸ªæä»¶æ¯å±äºåªä¸ªç»çï¼ç¨æ·æå±çç»ï¼ã
> æä»¶çãå±ä¸»ãæä¸å¥ãè¯»åæ§è¡æérwxã
> æä»¶çãå±ç»ãæä¸å¥ãè¯»åæ§è¡æérwxã

`ls -l` å¯ä»¥æ¥çæä»¶å¤¹ä¸æä»¶ç详ç»ä¿¡æ¯, ä»å·¦å°å³ 便¬¡æ¯:
- **æéï¼Aåºåï¼**, 第ä¸ä¸ªåç¬¦å¦ææ¯ `d` 表示ç®å½
- **ç¡¬é¾æ¥æ°ï¼Båºåï¼**, éä¿çè®²å°±æ¯æå¤å°ç§æ¹å¼, å¯ä»¥è®¿é®å½åç®å½åæä»¶
- **å±ä¸»ï¼Cåºåï¼**, æä»¶æ¯ææè
ãææ¯å«åå±ä¸»
- **å±ç»ï¼Dåºåï¼**, æä»¶å±äºåªä¸ªç»
- **大å°ï¼Eåºåï¼**ï¼æä»¶å¤§å°
- **æ¶é´ï¼Fåºåï¼**ï¼æå䏿¬¡è®¿é®æ¶é´
- **åç§°ï¼Gåºåï¼**:æä»¶çåç§°
#### æ´æ¹æé
##### æéæ¦è¿°
Linuxæä»¶å±æ§æä¸¤ç§è®¾ç½®æ¹æ³ï¼ä¸ç§æ¯æ°åï¼ä¸ç§æ¯ç¬¦å·
Linuxçæä»¶è°ç¨æéå为ä¸çº§ : æä»¶å±ä¸»ãå±ç»ãå
¶ä»ï¼å©ç¨ chmod å¯ä»¥æ§å¶æä»¶å¦ä½è¢«ä»äººæè°ç¨ã
```shell
chmod [-cfvR] [--help] [--version] mode file...
mode : æé设å®å串,æ ¼å¼: [ugoa...][[+-=][rwxX]...][,...]
```
* u 表示档æ¡çæ¥æè
ï¼g 表示ä¸è¯¥æ¡£æ¡æ¥æè
å±äºåä¸ä¸ªgroupè
ï¼o表示å
¶ä»ç人ï¼a 表示è¿ä¸è
çæ¯ã
* +表示å¢å æéã- è¡¨ç¤ºåæ¶æéã= 表示å¯ä¸è®¾å®æéã
* r 表示å¯è¯»åï¼w 表示å¯åå
¥ï¼x è¡¨ç¤ºå¯æ§è¡ï¼X è¡¨ç¤ºåªæè¯¥æ¡£æ¡æ¯ä¸ªåç®å½æè
该档æ¡å·²ç»è¢«è®¾å®è¿ä¸ºå¯æ§è¡ã
##### æ°åæé
å½ä»¤ï¼chmod [-R] xyz æä»¶æç®å½
- xyz : å°±æ¯ååæå°çæ°åç±»åçæé屿§ï¼ä¸º rwx 屿§æ°å¼çç¸å ã
- -R : è¿è¡éå½(recursive)çæç»åæ´ï¼äº¦å³è¿å次ç®å½ä¸çæææä»¶é½ä¼åæ´
æä»¶çæéå符为ï¼[-rwxrwxrwx]ï¼ è¿ä¹ä¸ªæéæ¯ä¸ä¸ä¸ç»çï¼æä»¬ä½¿ç¨æ°åæ¥ä»£è¡¨å个æéã
åæéçæ°å对ç
§è¡¨ï¼[r]:4; [w]:2; [x]:1; [-]:0
æ¯ç§èº«ä»½(owner/group/others)çä¸ä¸ªæé(r/w/x)åæ°æ¯éè¦ç´¯å çï¼ä¾å¦æéä¸ºï¼ [-rwxrwx---] åæ°æ¯ï¼
- owner = rwx = 4+2+1 = 7
- group = rwx = 4+2+1 = 7
- others= --- = 0+0+0 = 0
表示为ï¼`chmod -R 770 æä»¶å`
##### ç¬¦å·æé

- user å±ä¸»æé
- group å±ç»æé
- others å
¶ä»æé
- all å
¨é¨ç身份
æä»¬å°±å¯ä»¥ä½¿ç¨ **u, g, oï¼a** æ¥ä»£è¡¨èº«ä»½çæéï¼è¯»åçæéå¯ä»¥åæ **r, w, x**ã
`chmod u=rwx,g=rx,o=r a.txt`ï¼å°as.txtçæé设置为**-rwxr-xr--**
` chmod a-r a.txt`ï¼å°æä»¶çæææéå»é¤**r**
#### æ´æ¹å±ç»
chgrpå½ä»¤ç¨äºåæ´æä»¶æç®å½çæå±ç¾¤ç»ã
æä»¶æç®å½æéççæ¥æè
ç±æå±ç¾¤ç»æ¥ç®¡çãå¯ä»¥ä½¿ç¨chgrpæä»¤å»åæ´æä»¶ä¸ç®å½çæå±ç¾¤ç»ã
```shell
chgrp [-cfhRv][--help][--version][æå±ç¾¤ç»][æä»¶æç®å½...]
chgrp [-cfhRv][--help][--reference=<åèæä»¶æç®å½>][--version][æä»¶æç®å½...]
```
chgrp -v root aaaï¼å°æä»¶aaaçå±ç»æ´æ¹ærootï¼å
¶ä»ä¹å¯ä»¥ï¼
#### æ´æ¹å±ä¸»
å©ç¨ chown å¯ä»¥å°æ¡£æ¡çæ¥æè
å 以æ¹åã
ä½¿ç¨æé : 管çåè´¦æ·
```shell
chown [âR] å±ä¸»å æä»¶å
chown [-R] å±ä¸»å:å±ç»å æä»¶å
```
chown root aaaï¼å°æä»¶aaaçå±ä¸»æ´æ¹æroot
chown seazean:seazean aaaï¼å°æä»¶aaaçå±ä¸»åå±ç»æ´æ¹ä¸ºseazean
***
### æä»¶æä½
#### touch
touchå½ä»¤ç¨äºå建æä»¶ãä¿®æ¹æä»¶æè
ç®å½çæ¶é´å±æ§ï¼å
æ¬ååæ¶é´åæ´æ¹æ¶é´ãè¥æä»¶ä¸åå¨ï¼ç³»ç»ä¼å»ºç«ä¸ä¸ªæ°çæä»¶ãls -l å¯ä»¥æ¾ç¤ºæ¡£æ¡çæ¶é´è®°å½
```shell
touch [-acfm][-d<æ¥ææ¶é´>][-r<åèæä»¶æç®å½>] [-t<æ¥ææ¶é´>][--help][--version][æä»¶æç®å½â¦]
```
- -a æ¹åæ¡£æ¡çè¯»åæ¶é´è®°å½ã
- -m æ¹åæ¡£æ¡çä¿®æ¹æ¶é´è®°å½ã
- -c åå¦ç®çæ¡£æ¡ä¸åå¨ï¼ä¸ä¼å»ºç«æ°çæ¡£æ¡ãä¸ --no-create çææä¸æ ·ã
- -f ä¸ä½¿ç¨ï¼æ¯ä¸ºäºä¸å
¶ä» unix ç³»ç»çç¸å®¹æ§èä¿çã
- -r 使ç¨åèæ¡£çæ¶é´è®°å½ï¼ä¸ --file çææä¸æ ·ã
- -d è®¾å®æ¶é´ä¸æ¥æï¼å¯ä»¥ä½¿ç¨åç§ä¸åçæ ¼å¼ã
- -t è®¾å®æ¡£æ¡çæ¶é´è®°å½ï¼æ ¼å¼ä¸ date æä»¤ç¸åã
- --no-create ä¸ä¼å»ºç«æ°æ¡£æ¡ã
- --help ååºæä»¤æ ¼å¼ã
- --version ååºçæ¬è®¯æ¯ã
`touch t.txt`ï¼å建t.txtæä»¶
`touch t{1..10}.txt`ï¼å建10 个å为 t1.txt å° t10.txt ç空æä»¶
`touch t.txt`ï¼æ´æ¹t.txtçè®¿é®æ¶é´ä¸ºç°å¨
#### stat
statå½ä»¤ç¨äºæ¾ç¤ºinodeå
容ãstat以æåçæ ¼å¼æ¥æ¾ç¤ºinodeçå
容ã
å½ä»¤ï¼stat [æä»¶æç®å½]
#### cat
cat æ¯ä¸ä¸ªææ¬æä»¶æ¥çåè¿æ¥å·¥å
·ãç¨äºå°æä»¶
å½ä»¤ï¼cat [-AbeEnstTuv] [--help] [--version] Filename
* -n æ¾ç¤ºæä»¶å ä¸è¡å·
* -b å -n ç¸ä¼¼ï¼åªä¸è¿å¯¹äºç©ºç½è¡ä¸ç¼å·
#### less
lessç¨äºæ¥çæä»¶ï¼ä½æ¯less 卿¥çä¹åä¸ä¼å è½½æ´ä¸ªæä»¶ãç¨äºå¤§æä»¶
å½ä»¤ï¼less [options] Filename
* -N æ¾ç¤ºæ¯è¡è¡å·
#### tail
tail å½ä»¤å¯ç¨äºæ¥çæä»¶çå
å®¹ï¼æä¸ä¸ªå¸¸ç¨çåæ° **-f** 常ç¨äºæ¥é
æ£å¨æ¹åçæ¥å¿æä»¶ã
å½ä»¤ï¼tail [options] Filename
* -f 循ç¯è¯»å,卿æ¾ç¤ºææ¡£çæåå
容
* -n(è¡æ°) æ¾ç¤ºæä»¶çå°¾é¨ n è¡å
容
* -c(æ°ç®)> æ¾ç¤ºçåèæ°
* -nf æ¥çæåå è¡æ¥å¿ä¿¡æ¯
`tail -f filename`ï¼å¨ææ¾ç¤ºæå°¾é¨çå
容
`tail -n +2 txtfile.txt`ï¼æ¾ç¤ºæä»¶txtfile.txt çå
容ï¼ä»ç¬¬ 2 è¡è³æä»¶æ«å°¾
`tail -n 2 txtfile.txt`ï¼æ¾ç¤ºæä»¶txtfile.txt çå
å®¹ï¼æå2è¡
#### head
head å½ä»¤å¯ç¨äºæ¥çæä»¶çå¼å¤´é¨åçå
å®¹ï¼æä¸ä¸ªå¸¸ç¨çåæ° **-n** ç¨äºæ¾ç¤ºè¡æ°ï¼é»è®¤ä¸º 10
- -q éèæä»¶å
- -v æ¾ç¤ºæä»¶å
- -c<æ°ç®> æ¾ç¤ºçåèæ°ã
- -n<è¡æ°> æ¾ç¤ºçè¡æ°ã
`head -n Filename`ï¼æ¥çæä»¶çåä¸é¨å
`head -n 20 Filename`ï¼æ¥çæä»¶çå20è¡
#### grep
grep æä»¤ç¨äºæ¥æ¾å
容å
嫿å®çèæ¬æ ·å¼çæä»¶ï¼è¥ä¸æå®ä»»ä½æä»¶åç§°ï¼ææ¯æç»äºçæä»¶å为 -ï¼å grep æä»¤ä¼ä»æ åè¾å
¥è®¾å¤è¯»åæ°æ®ã
```shell
grep [-abcEFGhHilLnqrsvVwxy][-A<æ¾ç¤ºåæ°>][-B<æ¾ç¤ºåæ°>][-C<æ¾ç¤ºåæ°>][-d<è¿è¡å¨ä½>][-e<èæ¬æ ·å¼>][-f<èæ¬æä»¶>][--help][èæ¬æ ·å¼][æä»¶æç®å½...]
```
* -cï¼åªè¾åºå¹é
è¡ç计æ°ã
* -iï¼ä¸åºå大å°åã
* -hï¼æ¥è¯¢å¤æä»¶æ¶ä¸æ¾ç¤ºæä»¶åã
* -lï¼æ¥è¯¢å¤æä»¶æ¶åªè¾åºå
å«å¹é
å符çæä»¶åã
* -nï¼æ¾ç¤ºå¹é
è¡åè¡å·ã
* -sï¼ä¸æ¾ç¤ºä¸å卿æ å¹é
ææ¬çé误信æ¯ã
* -vï¼æ¾ç¤ºä¸å
å«å¹é
ææ¬çææè¡ã
* --color=auto ï¼å¯ä»¥å°æ¾å°çå
³é®è¯é¨åå ä¸é¢è²çæ¾ç¤ºã
**管é符 |**ï¼è¡¨ç¤ºå°åä¸ä¸ªå½ä»¤å¤ççç»æä¼ éç»åé¢çå½ä»¤å¤çã
`grep aaaa Filename `ï¼æ¾ç¤ºåå¨å
³é®åaaaaçè¡
`grep -n aaaa Filename`ï¼æ¾ç¤ºåå¨å
³é®åaaaaçè¡ï¼ä¸æ¾ç¤ºè¡å·
`grep -i aaaa Filename`ï¼å¿½ç¥å¤§å°åï¼æ¾ç¤ºåå¨å
³é®åaaaaçè¡
`grep -v aaaa Filename`ï¼æ¾ç¤ºåå¨å
³é®åaaaaçææè¡
`ps -ef | grep sshd`ï¼æ¥æ¾å
å«sshdè¿ç¨çè¿ç¨ä¿¡æ¯
` ps -ef|grep -c sshd`ï¼æ¥æ¾sshdç¸å
³çè¿ç¨ä¸ªæ°
#### echo
å°å符串è¾åºå°æ§å¶å° , é常å **éå®å** èå使ç¨
å½ä»¤ï¼echo string # 妿å符串æç©ºæ ¼, 为äºé¿å
æ§ä¹ 请å¢å åå¼å· æè
åå¼å·
- éè¿ `å½ä»¤ > æä»¶` å°**å½ä»¤çæåç»æ** **è¦ç** æå®æä»¶å
容
- éè¿ `å½ä»¤ >> æä»¶` å°**å½ä»¤çæåç»æ** **追å ** æå®æä»¶çåé¢
- éè¿ `å½ä»¤ &>> æä»¶` å° **å½ä»¤çå¤±è´¥ç»æ** **追å ** æå®æä»¶çåé¢
`echo "ç¨åºå" >> a.txt`ï¼å°ç¨åºå追å å°a.txtåé¢
`cat ä¸åå¨çç®å½ &>> error.log`ï¼å°é误信æ¯è¿½å å°error.logæä»¶
#### awk
AWKæ¯ä¸ç§å¤çææ¬æä»¶çè¯è¨ï¼æ¯ä¸ä¸ªå¼ºå¤§çææ¬åæå·¥å
·ã
```shell
awk [options] 'script' var=value file(s)
awk [options] -f scriptfile var=value file(s)
```
* -F fs æå®è¾å
¥æä»¶æåé符ï¼fsæ¯ä¸ä¸ªå符串æè
æ¯ä¸ä¸ªæ£å表达å¼
* -v var=valueèµå¼ä¸ä¸ªç¨æ·å®ä¹åé
* -f ä»èæ¬æä»¶ä¸è¯»åawkå½ä»¤
* $n(æ°å) è·å**ç¬¬å æ®µ**å
容
* $0 è·å **å½åè¡** å
容
* NF 表示å½åè¡å
±æå¤å°ä¸ªå段
* $NF 代表 æåä¸ä¸ªå段
* $(NF-1) 代表 åæ°ç¬¬äºä¸ªå段
* NR 代表 å¤ççæ¯ç¬¬å è¡
* ```shell
å½ä»¤ï¼awk 'BEGIN{åå§åæä½}{æ¯è¡é½æ§è¡} END{ç»ææ¶æä½}'
æä»¶åBEGIN{ è¿é颿¾çæ¯æ§è¡åçè¯å¥ }{è¿é颿¾çæ¯å¤çæ¯ä¸è¡æ¶è¦æ§è¡çè¯å¥}
END {è¿é颿¾çæ¯å¤ç宿æçè¡åè¦æ§è¡çè¯å¥ }
```
```a.txt
//å夿°æ®
zhangsan 68 99 26
lisi 98 66 96
wangwu 38 33 86
zhaoliu 78 44 36
maq 88 22 66
zhouba 98 44 46
```
* `cat a.txt | awk '/zhang|li/'`ï¼æç´¢å«æ zhang å li çå¦çæç»©
* `awk "/zhang|li/" a.txt `ï¼åä¸ä¸ä¸ªå½ä»¤ï¼ææä¸æ ·
```
zhangsan 68 99 26
lisi 98 66 96
zhaoliu 78 44 36
```
* `cat a.txt | awk -F ' ' '{print $1,$2,$3}'`ï¼æç
§ç©ºæ ¼åå², æå° ä¸äºä¸å å
容
* `awk -F ' ' '{OFS="\t"}{print $1,$2,$3}'`ï¼æç
§å¶è¡¨ç¬¦tab è¿è¡åå², æå°ä¸äºä¸å
\bï¼éæ ¼ \fï¼æ¢é¡µ \nï¼æ¢è¡ \rï¼å车 \tï¼å¶è¡¨ç¬¦
```
zhangsan 68 99
lisi 98 66
wangwu 38 33
zhaoliu 78 44
maq 88 22
zhouba 98 44
```
* `awk -F ',' '{print toupper($1)}' a.txt`ï¼æ ¹æ®éå·åå², æå°å
容ï¼ç¬¬ä¸æ®µå¤§å
| 彿°å | å«ä¹ | ä½ç¨ |
| --------- | ------ | -------------- |
| toupper() | upper | å符 转æ 大å |
| tolower() | lower | å符 转æå°å |
| length() | length | è¿å å符é¿åº¦ |
* `awk -F ' ' 'BEGIN{}{total=total+$4} END{print total}' a.txt`ï¼è®¡ç®çæ¯ç¬¬4åçæ»å
* `awk -F ' ' 'BEGIN{}{total=total+$4} END{print total, NR}' a.txt` ï¼æ¥çæ»å, æ»äººæ°
* `awk -F ' ' 'BEGIN{}{total=total+$4} END{print total, NR, (total/NR)}' a.txt`ï¼æ¥çæ»å, æ»äººæ°ï¼å¹³åæ°
* `cat a.txt | awk -F ' ' 'BEGIN{}{total=total+$4} END{print total}' `ï¼å¯ä»¥è¿æ ·å
#### find
findå½ä»¤ç¨æ¥å¨æå®ç®å½ä¸æ¥æ¾æä»¶ãä»»ä½ä½äºåæ°ä¹åçå符串é½å°è¢«è§ä¸ºæ¬²æ¥æ¾çç®å½åãå¦æä½¿ç¨è¯¥å½ä»¤æ¶ï¼ä¸è®¾ç½®ä»»ä½åæ°ï¼åfindå½ä»¤å°å¨å½åç®å½ä¸æ¥æ¾åç®å½ä¸æä»¶ãå¹¶ä¸å°æ¥æ¾å°çåç®å½åæä»¶å
¨é¨è¿è¡æ¾ç¤º
å½ä»¤ï¼find <æå®ç®å½> <æå®æ¡ä»¶> <æå®å
容>
* `find . -name "*.gz"`ï¼å°ç®åç®å½åå
¶åç®å½ä¸ææå»¶ä¼¸æ¡£åæ¯ gz çæä»¶æ¥è¯¢åºæ¥
* `find . -ctime -1`ï¼å°ç®åç®å½åå
¶åç®å½ä¸æææè¿ 1天å
æ´æ°è¿çæä»¶æ¥è¯¢åºæ¥
* ` find / -name 'seazean'`ï¼å
¨å±æç´¢seazean
#### read
readå½ä»¤ç¨äºä»æ åè¾å
¥è¯»åæ°å¼ã
read å
é¨å½ä»¤è¢«ç¨æ¥ä»æ åè¾å
¥è¯»ååè¡æ°æ®ãè¿ä¸ªå½ä»¤å¯ä»¥ç¨æ¥è¯»åé®çè¾å
¥ï¼å½ä½¿ç¨éå®åçæ¶åï¼å¯ä»¥è¯»åæä»¶ä¸çä¸è¡æ°æ®ã
```shell
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
```
#### sort
Linux sortå½ä»¤ç¨äºå°ææ¬æä»¶å
容å 以æåº
```sh
sort [-bcdfimMnr][æä»¶]
```
* -n ä¾ç
§æ°å¼ç大尿åº
* -r 以ç¸åçé¡ºåºæ¥æåºï¼sorté»è®¤çæåºæ¹å¼æ¯**ååº**ï¼æ¹æéåºï¼å -rï¼
* -u 廿éå¤
é¢è¯é¢ï¼ä¸åæ°åï¼è¾åºæå¤§ç4个ä¸éå¤çæ°
```sh
sort -ur a.txt | head -n 4
sort -r a.txt | uniq | head -n 4
```
#### uniq
uniqç¨äºé夿°æ®å¤çï¼ä½¿ç¨åå
sortæåº
```sh
uniq [OPTION]... [INPUT [OUTPUT]]
```
* -c 卿°æ®è¡ååºç°ç次æ°
* -d åªæå°éå¤çè¡,éå¤çè¡åªæ¾ç¤ºä¸æ¬¡
* -D åªæå°éå¤çè¡,éå¤çè¡åºç°å¤å°æ¬¡å°±æ¾ç¤ºå¤å°æ¬¡
* -f 忽ç¥è¡é¦çå ä¸ªåæ®µ
* -i 忽ç¥å¤§å°å
* -s 忽ç¥è¡é¦çå ä¸ªåæ¯
* -u åªæå°å¯ä¸çè¡
* -w æ¯è¾ä¸è¶
è¿nä¸ªåæ¯
****
### æä»¶å缩
#### tar
tarç主è¦åè½æ¯æå
ãå缩åè§£åæä»¶ãtaræ¬èº«ä¸å
·æå缩åè½ã仿¯è°ç¨å缩åè½å®ç°ç ã
å½ä»¤ï¼tar [å¿
è¦åæ°] [鿩忰] [æä»¶]
* -c 产ç.tar æä»¶
* -v æ¾ç¤ºè¯¦ç»ä¿¡æ¯
* -z æå
åæ¶å缩
* -f æå®å缩åçæä»¶å
* -x è§£å.tar æä»¶
* -t ååºtaræä»¶ä¸å
å«çæä»¶çä¿¡æ¯
* -r éå æ°çæä»¶å°taræä»¶ä¸
`tar -cvf txt.tar txtfile.txt `ï¼å° txtfile.txtæä»¶æå
ï¼ä»
æå
ï¼ä¸å缩ï¼
`tar -zcvf combine.tar.gz 1.txt 2.txt 3.txt`ï¼å° 123.txtæä»¶æå
åç¼©ï¼æå
**å缩**ï¼gzipï¼
`tar -ztvf txt.tar.gz`ï¼æ¥çtar䏿åªäºæä»¶
`tar -zxvf Filename -C ç®æ è·¯å¾`ï¼**è§£å**
> åæ° f ä¹åçæä»¶æ¡£åæ¯èªå·±åçï¼ä¹ æ¯ä¸é½ç¨ .tar æ¥ä½ä¸ºè¾¨è¯ã
> 妿å z åæ°ï¼å以 .tar.gz æ .tgz æ¥ä»£è¡¨ gzip å缩è¿ç tarå
#### gzip
gzipå½ä»¤ç¨äºå缩æä»¶ã
gzipæ¯ä¸ªä½¿ç¨å¹¿æ³çå缩ç¨åºï¼æä»¶ç»å®å缩è¿åï¼å
¶åç§°åé¢ä¼å¤åº".gz"çæ©å±å
* gzip * ï¼å缩ç®å½ä¸çæææä»¶ï¼å 餿ºæä»¶ã䏿¯æç´æ¥å缩ç®å½
* gzip -rv ç®å½åï¼éå½å缩ç®å½
* gzip -dv *ï¼è§£åæä»¶å¹¶ååºè¯¦ç»ä¿¡æ¯
#### gunzip
gunzipå½ä»¤ç¨äºè§£åæä»¶ãç¨äºè§£å¼è¢«gzipå缩è¿çæä»¶
å½ä»¤ï¼gunzip [options] [æä»¶æè
ç®å½]
gunzip 001.gz ï¼è§£å001.gzæä»¶
#### zip
zipå½ä»¤ç¨äºå缩æä»¶ã
zipæ¯ä¸ªä½¿ç¨å¹¿æ³çå缩ç¨åºï¼æä»¶ç»å®å缩åä¼å¦å¤äº§çå
·æ".zip"æ©å±åçå缩æä»¶ã
å½ä»¤ï¼zip [å¿
è¦åæ°] [鿩忰] [æä»¶]
* -q 䏿¾ç¤ºæä»¤æ§è¡è¿ç¨
* -r éå½å¤çï¼å°æå®ç®å½ä¸çæææä»¶ååç®å½ä¸å¹¶å¤ç
`zip -q -r z.zip *`ï¼å°è¯¥ç®å½çæä»¶å
¨é¨å缩
#### unzip
unzip å½ä»¤ç¨äºè§£å缩zipæä»¶ï¼unzip 为.zipå缩æä»¶çè§£å缩ç¨åº
å½ä»¤ï¼unzip [å¿
è¦åæ°] [鿩忰] [æä»¶]
- -l æ¥çå缩æä»¶å
æå
å«çæä»¶
- -d<ç®å½> æå®æä»¶è§£å缩åæè¦åå¨çç®å½ã
`unzip -l z.zip` ï¼æ¥çå缩æä»¶ä¸å
å«çæä»¶
`unzip -d ./unFiles z.zip`ï¼ææä»¶è§£åå°æå®çç®å½ä¸
#### bzip2
bzip2å½ä»¤æ¯.bz2æä»¶çå缩ç¨åºã
bzip2éç¨æ°çå缩æ¼ç®æ³ï¼åç¼©æææ¯ä¼ ç»çLZ77/LZ78å缩æ¼ç®æ³æ¥å¾å¥½ãè¥æ²¡æå ä¸ä»»ä½åæ°ï¼bzip2åç¼©å®æä»¶åä¼äº§ç.bz2çå缩æä»¶ï¼å¹¶å é¤åå§çæä»¶ã
```sh
bzip2 [-cdfhkLstvVz][--repetitive-best][--repetitive-fast][- å缩ç级][è¦å缩çæä»¶]
```
å缩ï¼
bzip2 a.txt
#### bunzip2
bunzip2å½ä»¤æ¯.bz2æä»¶çè§£å缩ç¨åºã
å½ä»¤ï¼bunzip2 [-fkLsvV] [.bz2å缩æä»¶]
- -vãè§£å缩æä»¶æ¶ï¼æ¾ç¤ºè¯¦ç»çä¿¡æ¯ã
è§£åï¼bunzip2 -v a.bz2
***
### æä»¶ç¼è¾
#### Vim
**vim**:æ¯ä» vi ï¼ç³»ç»å
ç½®å½ä»¤ï¼åå±åºæ¥çä¸ä¸ªææ¬ç¼è¾å¨ã代ç è¡¥å
¨ãç¼è¯åéè¯¯è·³è½¬çæ¹ä¾¿ç¼ç¨çåè½ç¹å«ä¸°å¯ï¼å¨ç¨åºåä¸è¢«å¹¿æ³ä½¿ç¨ã
ç®åçæ¥è¯´ï¼ vi æ¯èå¼çåå¤çå¨ï¼ä¸è¿åè½å·²ç»å¾é½å
¨äºï¼ä½æ¯è¿æ¯æå¯ä»¥è¿æ¥çå°æ¹ã
**å½ä»¤æ¨¡å¼**ï¼å¨Linuxç»ç«¯ä¸è¾å
¥âvim æä»¶åâå°±è¿å
¥äºå½ä»¤æ¨¡å¼,ä½ä¸è½è¾å
¥æåã
**ç¼è¾æ¨¡å¼ï¼**å¨å½ä»¤æ¨¡å¼ä¸æiå°±ä¼è¿å
¥ç¼è¾æ¨¡å¼ï¼æ¤æ¶å°±å¯ä»¥åå
¥ç¨å¼ï¼æEscå¯åå°å½ä»¤æ¨¡å¼ã
**æ«è¡æ¨¡å¼ï¼**å¨å½ä»¤æ¨¡å¼ä¸æï¼è¿å
¥æ«è¡æ¨¡å¼ï¼å·¦ä¸è§ä¼æä¸ä¸ªåå·åºç°ï¼æ¤æ¶å¯ä»¥æ²å
¥å½ä»¤å¹¶æ§è¡
#### æå¼æä»¶
Ubuntu é»è®¤æ²¡æå®è£
vimï¼éè¦å
å®è£
vimï¼å®è£
å½ä»¤ï¼**sudo apt-get install vim**
Vim æä¸ç§æ¨¡å¼ï¼å½ä»¤æ¨¡å¼ï¼Command modeï¼ãæå
¥æ¨¡å¼ï¼Insert modeï¼ãæ«è¡æ¨¡å¼ï¼Last Line modeï¼
| Vim 使ç¨çé项 | 说æ | å¸¸ç¨ |
| :---------------------: | :-------------------------------------------: | :--: |
| vim filename | æå¼ææ°å»ºä¸ä¸ªæä»¶ï¼å°å
æ ç½®äºç¬¬ä¸è¡é¦é¨ | å¸¸ç¨ |
| vim -r filename | æ¢å¤ä¸æ¬¡vimæå¼æ¶å´©æºçæä»¶ | |
| vim -R filename | ææå®çæä»¶ä»¥åªè¯»çæ¹å¼æ¾å
¥Vimç¼è¾å¨ | |
| vim + filename | æå¼æä»¶ï¼å°å
æ ç½®äºæåä¸è¡çé¦é¨ | å¸¸ç¨ |
| vim +n filename | æå¼æä»¶ï¼å°å
æ ç½®äºnè¡çé¦é¨ | å¸¸ç¨ |
| vim +/pattern filename | æå¼æä»¶ï¼å°å
æ ç½®äºç¬¬ä¸ä¸ªä¸patternå¹é
çä½ç½® | |
| vim -c command filename | 对æä»¶ç¼è¾åï¼å
æ§è¡æå®çå½ä»¤ | |
***
#### æå
¥æ¨¡å¼
å¨å½ä»¤æ¨¡å¼ä¸ï¼éè¿æä¸ iãIãaãAãoãO è¿ 6 ä¸ªåæ¯è¿å
¥æå
¥æ¨¡å¼
| å¿«æ·é® | åè½æè¿° |
| :----: | :------------------------------------------------------: |
| i | å¨å
æ æå¨ä½ç½®æå
¥ææ¬ï¼å
æ åçææ¬åå³ç§»å¨ |
| I | å¨å
æ æå¨è¡çè¡é¦æå
¥ææ¬ï¼è¡é¦æ¯è¯¥è¡ç第ä¸ä¸ªé空ç½å符 |
| o | å¨å
æ æå¨è¡çä¸é¢æå
¥æ°çä¸è¡ï¼å
æ åå¨ç©ºè¡é¦ |
| O | å¨å
æ æå¨è¡çä¸é¢æå
¥æ°çä¸è¡ï¼å
æ åå¨ç©ºè¡é¦ |
| a | å¨å
æ æå¨ä½ç½®ä¹åæå
¥ææ¬ |
| A | å¨å
æ æå¨è¡çè¡å°¾æå
¥ææ¬ |
æä¸ESCé®ï¼ç¦»å¼æå
¥æ¨¡å¼ï¼è¿å
¥å½ä»¤æ¨¡å¼
å 为æä»¬æ¯ä¸ä¸ªç©ºæä»¶ï¼æä»¥ä½¿ç¨ãIãæè
ãiãé½å¯ä»¥
妿éé¢çææ¬å¾å¤ï¼è¦ä½¿ç¨ãAãè¿å
¥ç¼è¾æ¨¡å¼ï¼å³å¨è¡æ«æ·»å ææ¬
***
#### å½ä»¤æ¨¡å¼
Vim æå¼ä¸ä¸ªæä»¶ï¼æä»¶å¯ä»¥åå¨ï¼ä¹å¯ä»¥ä¸åå¨ï¼ï¼é»è®¤å°±æ¯è¿å
¥å½ä»¤æ¨¡å¼ãå¨è¯¥æ¨¡å¼ä¸ï¼ è¾å
¥çå符ä¼è¢«å½åæä»¤ï¼èä¸ä¼è¢«å½åè¦è¾å
¥çæåãå¨è¯¥æ¨¡å¼ä¸ï¼å¯ä»¥ä½¿ç¨æä»¤è¿è¡è·³è³æç« å¼å¤´ãæç« ç»å°¾ãå 餿è¡ãå¤å¶ãç²è´´çå
容ã
##### ç§»å¨å
æ
| å¿«æ·é® | åè½æè¿° |
| :----: | :----------------------------: |
| w | å
æ ç§»å¨è³ä¸ä¸ä¸ªåè¯çåè¯é¦ |
| b | å
æ ç§»å¨è³ä¸ä¸ä¸ªåè¯çåè¯é¦ |
| e | å
æ ç§»å¨è³ä¸ä¸ä¸ªåè¯çåè¯å°¾ |
| 0 | å
æ ç§»å¨è³å½åè¡çè¡é¦ |
| ^ | è¡é¦, 第ä¸ä¸ªä¸æ¯ç©ºç½å符çä½ç½® |
| $ | å
æ ç§»å¨è³å½åè¡çè¡å°¾ |
| gg | å
æ ç§»å¨è³æä»¶å¼å¤´ |
| G | å
æ ç§»å¨è³æä»¶æ«å°¾ |
| ngg | å
æ ç§»å¨è³ç¬¬nè¡ |
| nG | å
æ ç§»å¨è³ç¬¬nè¡ |
| :n | å
æ ç§»å¨è³ç¬¬nè¡ |
***
##### é䏿æ¬
å¨ vi/vim ä¸è¦éæ©ææ¬, éè¦æ¾ç¤º visual å½ä»¤åæ¢å° **å¯è§æ¨¡å¼**
vi/vim 䏿ä¾äº **ä¸ç§** å¯è§æ¨¡å¼, å¯ä»¥æ¹ä¾¿ç¨åºåçéæ© **é䏿æ¬çæ¹å¼**
æ ESC å¯ä»¥æ¾å¼éä¸, è¿åå° **å½ä»¤æ¨¡å¼**
| å½ä»¤ | æ¨¡å¼ | åè½ |
| -------- | ---------- | ---------------------------------- |
| v | å¯è§æ¨¡å¼ | ä»å
æ ä½ç½®å¼å§æç
§æ£å¸¸æ¨¡å¼éæ©ææ¬ |
| V | å¯è§åæ¨¡å¼ | éä¸å
æ ç»è¿ç宿´è¡ |
| Ctrl + v | 坿¯åæ¨¡å¼ | åç´æ¹åéä¸ææ¬ |
##### æ¤éå é¤
å¨å¦ä¹ ç¼è¾å½ä»¤ä¹å,å
è¦ç¥éææ ·æ¤éä¹å䏿¬¡ é误ç ç¼è¾æä½
| å½ä»¤ | è±æ | åè½ |
| -------- | ----- | ------------------------ |
| u | undo | æ¤é䏿¬¡çå½ä»¤(ctrl + z) |
| Ctrl + r | uredo | æ¢å¤æ¤éçå½ä»¤ |
å é¤çå
å®¹æ¤æ¶å¹¶æ²¡æçæ£ç被å é¤ï¼å¨åªåæ¿ä¸ï¼æä¸ p é®ï¼å¯ä»¥å°å é¤çå
容ç²è´´åæ¥
| å¿«æ·é® | åè½æè¿° |
| :---------: | :----------------------: |
| x | å é¤å
æ æå¨ä½ç½®çå符 |
| d(ç§»å¨å½ä»¤) | å é¤ç§»å¨å½ä»¤å¯¹åºçå
容 |
| dd | å é¤å
æ æå¨è¡çå
容 |
| D | å é¤å
æ ä½ç½®å°è¡å°¾çå
容 |
| :n1,n2 | å é¤ä»a1å°a2è¡çææ¬å
容 |
**å é¤å½ä»¤å¯ä»¥åç§»å¨å½ä»¤è¿ç¨, 以䏿¯å¸¸è§çç»åå½ä»¤(æ©å±):**
| å½ä»¤ | ä½ç¨ |
| ---- | --------------------------------- |
| dw | å é¤ä»å
æ ä½ç½®å°åè¯æ«å°¾ |
| d} | å é¤ä»å
æ ä½ç½®å°æ®µè½æ«å°¾ |
| dG | å é¤å
æ æè¡å°æä»¶æ«å°¾çææå
容 |
| ndd | å é¤å½åè¡ï¼å
æ¬æ¤è¡ï¼å°ånè¡å
容 |
***
##### å¤å¶ç²è´´
vim 䏿便ä¸ä¸ª 被å¤å¶ææ¬çç¼å²åº
- å¤å¶ å½ä»¤ä¼å°éä¸çæåä¿åå¨ç¼å²åº
- å é¤ å½ä»¤å é¤çæåä¼è¢«ä¿åå¨ç¼å²åº
- å¨éè¦çä½ç½®, ä½¿ç¨ ç²è´´ å½ä»¤å¯ä»¥å°ç¼å²å¯¹çæåæå
¥å°å
æ æå¨çä½ç½®
- vimä¸çææ¬ç¼å²åºåªæä¸ä¸ª,妿åç»åè¿ å¤å¶ãåªåæä½, ä¹åç¼å²åºä¸çå
容ä¼è¢«æ¿æ¢.
| å¿«æ·é® | åè½æè¿° |
| :-----: | :--------------------------: |
| y | å¤å¶å·²éä¸çææ¬å°åªåæ¿ |
| yy | å°å
æ æå¨è¡å¤å¶å°åªåæ¿ |
| nyy | å¤å¶ä»å
æ æå¨è¡å°åä¸nè¡ |
| p | å°åªåæ¿ä¸çå
容ç²è´´å°å
æ å |
| P(大å) | å°åªåæ¿ä¸çå
容ç²è´´å°å
æ å |
注æï¼viä¸ç **ææ¬ç¼å²åº**åç³»ç»ç**åªåæ¿**䏿¯åä¸ä¸ªï¼å¨å
¶ä»è½¯ä»¶ä¸ä½¿ç¨ Ctrl + C å¤å¶çå
容ï¼ä¸è½å¨vim ä¸éè¿ `p` å½ä»¤ç²è´´ï¼å¯ä»¥å¨ **ç¼è¾æ¨¡å¼** ä¸ä½¿ç¨ **é¼ æ å³é®ç²è´´**ã
***
##### æ¥æ¾æ¿æ¢
æ¥æ¾
| å¿«æ·é® | åè½æè¿° |
| :----: | :--------------------------------------: |
| /abc | ä»å
æ æå¨ä½ç½®å忥æ¾å符串abc |
| /^abc | æ¥æ¾ä»¥abc为è¡é¦çè¡ |
| /abc$ | æ¥æ¾ä»¥abc为è¡å°¾çè¡ |
| ?abc | ä»å
æ æå¨ä½ç½®å忥æ¾å符串abc |
| * | å忥æ¾å½åå
æ æå¨åè¯ |
| # | å忥æ¾å½åå
æ æå¨åè¯ |
| n | æ¥æ¾ä¸ä¸ä¸ªï¼åå䏿¹åéå¤ä¸æ¬¡çæ¥æ¾æä»¤ |
| N | æ¥æ¾ä¸ä¸ä¸ªï¼åç¸åæ¹åéå¤ä¸æ¬¡çæ¥æ¾æä»¤ |
æ¿æ¢ï¼
| å½ä»¤ | åè½ | 工使¨¡å¼ |
| ---- | ---------------------- | -------- |
| r | æ¿æ¢å½åå符 | å½ä»¤æ¨¡å¼ |
| R | æ¿æ¢å½åè¡å
æ åçå符 | æ¿æ¢æ¨¡å¼ |
- å
æ éä¸è¦æ¿æ¢çå符
- `R` å½ä»¤å¯ä»¥è¿å
¥ **æ¿æ¢æ¨¡å¼**, æ¿æ¢å®æå, æä¸ESC, æä¸ ESCå¯ä»¥åå° **å½ä»¤æ¨¡å¼**
- **æ¿æ¢å½ä»¤** çä½ç¨å°±æ¯ä¸ç¨è¿å
¥ **ç¼è¾æ¨¡å¼**, 对æä»¶è¿è¡ **è½»é级çä¿®æ¹**
***
#### æ«è¡æ¨¡å¼
å¨å½ä»¤æ¨¡å¼ä¸ï¼æä¸ï¼é®è¿å
¥æ«è¡æ¨¡å¼
| å½ä»¤ | åè½æè¿° |
| :---------: | :-------------------------------------------------: |
| :wq | ä¿åå¹¶éåºVimç¼è¾å¨ |
| :wq! | ä¿å并强å¶éåºVimç¼è¾å¨ |
| :q | ä¸ä¿åä¸éåºVimç¼è¾å¨ |
| :q! | ä¸ä¿åä¸å¼ºå¶éåºVimç¼è¾å¨ |
| :w | ä¿å使¯ä¸éåºVimç¼è¾å¨ |
| :w! | 强å¶ä¿å使¯ä¸éåºVimç¼è¾å¨ |
| :w filename | å¦åå°filenameæä»¶ |
| x! | ä¿åææ¬ï¼éåºä¿å使¯ä¸éåºVimç¼è¾å¨ï¼æ´éç¨çå½ä»¤ |
| ZZ | ç´æ¥éåºä¿å使¯ä¸éåºVimç¼è¾å¨ |
| :n | å
æ ç§»å¨è³ç¬¬nè¡è¡é¦ |
#### å¼å¸¸å¤ç
* 妿 vimå¼å¸¸éåº, å¨ç£çä¸å¯è½ä¼ä¿åæ äº¤æ¢æä»¶
* 䏿¬¡åä½¿ç¨ vim ç¼è¾æä»¶æ¶, ä¼çå°ä»¥ä¸å±å¹ä¿¡æ¯,

* ls -a ä¸ä¸ï¼ä¼çå°éèç.swpæä»¶ å é¤äºæ¤æä»¶å³å¯ã
***
### 龿¥
```sh
ln [-sf] source_filename dist_filename
```
* -sï¼é»è®¤æ¯å®ä½é¾æ¥ï¼å -s 为符å·é¾æ¥
* -fï¼å¦æç®æ æä»¶å卿¶ï¼å
å é¤ç®æ æä»¶
**å®ä½é¾æ¥**ï¼
* å¨ç®å½ä¸å建ä¸ä¸ªæ¡ç®ï¼è®°å½çæä»¶åä¸ inode ç¼å·ï¼è¿ä¸ª inode å°±æ¯æºæä»¶ç inode
* å é¤ä»»æä¸ä¸ªæ¡ç®ï¼æä»¶è¿æ¯åå¨ï¼åªè¦å¼ç¨æ°éä¸ä¸º 0
* ä¸è½è·¨è¶æä»¶ç³»ç»ãä¸è½å¯¹ç®å½è¿è¡é¾æ¥
```sh
ln /etc/crontab .
ll
34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 crontab
34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 /etc/crontab
```
**符å·é¾æ¥**ï¼
* 符å·é¾æ¥æä»¶ä¿åçæºæä»¶æå¨çç»å¯¹è·¯å¾ï¼å¨è¯»åæ¶ä¼å®ä½å°æºæä»¶ä¸ï¼å¯ä»¥ç解为 Windows çå¿«æ·æ¹å¼
* 彿ºæä»¶è¢«å é¤äºï¼é¾æ¥æä»¶å°±æä¸å¼äº
* è®°å½çæ¯è·¯å¾ï¼æä»¥å¯ä»¥ä¸ºç®å½å»ºç«ç¬¦å·é¾æ¥
```sh
34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 /etc/crontab
53745909 lrwxrwxrwx. 1 root root 12 Jun 23 22:31 /root/crontab2 -> /etc/crontab
```
***
## è¿ç¨ç®¡ç
### æ¥çè¿ç¨
ps æä»¤ï¼æ¥çæä¸ªæ¶é´ç¹çè¿ç¨ä¿¡æ¯
topæä»¤ï¼å®æ¶æ¾ç¤ºè¿ç¨ä¿¡æ¯
pstreeï¼æ¥çè¿ç¨æ
```sh
pstree -A #æ¥çææè¿ç¨æ
```
***
### è¿ç¨ID
è¿ç¨å·ï¼
* è¿ç¨å·ä¸º 0 çè¿ç¨é常æ¯è°åº¦è¿ç¨ï¼å¸¸å¸¸è¢«ç§°ä¸ºäº¤æ¢è¿ç¨ï¼swapperï¼ï¼è¯¥è¿ç¨æ¯å
æ ¸çä¸é¨åï¼å®å¹¶ä¸æ§è¡ä»»ä½ç£çä¸çç¨åºï¼å æ¤ä¹è¢«ç§°ä¸ºç³»ç»è¿ç¨
* è¿ç¨å·ä¸º 1 æ¯ init è¿ç¨ï¼æ¯ä¸ä¸ªå®æ¤è¿ç¨ï¼å¨èªä¸¾è¿ç¨ç»ææ¶ç±å
æ ¸è°ç¨ï¼init è¿ç¨ç»ä¸ä¼ç»æ¢ï¼æ¯ä¸ä¸ªæ®éçç¨æ·è¿ç¨ï¼ä½æ¯å®ä»¥è¶
çº§ç¨æ·ç¹æè¿è¡
ç¶è¿ç¨ ID 为 0 çè¿ç¨é常æ¯å
æ ¸è¿ç¨ï¼å®ä»¬ä½ä¸ºç³»ç»èªä¸¾è¿ç¨çä¸é¨åèå¯å¨ï¼init è¿ç¨æ¯ä¸ªä¾å¤ï¼å®çç¶è¿ç¨æ¯0ï¼ä½å®æ¯ç¨æ·è¿ç¨
主å = RAM + BIOS é¨åç ROM
èªä¸¾ç¨åºåå¨å¨å
åä¸ ROMï¼BIOS è¯çï¼ï¼ç¨æ¥å è½½æä½ç³»ç»ãCPU çç¨åºè®¡æ°å¨æå ROM ä¸èªä¸¾ç¨åºç¬¬ä¸æ¡æä»¤æå¯¹åºçä½ç½®ï¼å½è®¡ç®æºéçµï¼CPU å¼å§è¯»åå¹¶æ§è¡èªä¸¾ç¨åºï¼å°æä½ç³»ç»ï¼ä¸æ¯å
¨é¨ï¼åªæ¯å¯å¨è®¡ç®æºçé£é¨åç¨åºï¼è£
å
¥RAMä¸ï¼è¿ä¸ªè¿ç¨æ¯èªä¸¾è¿ç¨ãè£
å
¥å®æå CPU çç¨åºè®¡æ°å¨å°±è¢«è®¾ç½®ä¸º RAM 䏿ä½ç³»ç»çç¬¬ä¸æ¡æä»¤æå¯¹åºçä½ç½®ï¼æ¥ä¸æ¥ CPU å°å¼å§æ§è¡æä½ç³»ç»çæä»¤
åå¨å¨ ROM ä¸ä¿çå¾å°çèªä¸¾è£
å
¥ç¨åºï¼å®æ´åè½çèªä¸¾ç¨åºä¿åå¨ç£ççå¯å¨åä¸ï¼å¯å¨åä½äºç£ççåºå®ä½ï¼æ¥æå¯å¨ååºçç£ç称为å¯å¨ç£çæç³»ç»ç£çï¼Cçï¼
***
### è¿ç¨ç¶æ
| ç¶æ | 说æ |
| ---- | ------------------------------------------------------------ |
| R | running or runnable (on run queue) æ£å¨æ§è¡æè
坿§è¡ï¼æ¤æ¶è¿ç¨ä½äºæ§è¡éåä¸ |
| D | uninterruptible sleep (usually I/O) ä¸å¯ä¸æé»å¡ï¼é常为 IO é»å¡ |
| S | interruptible sleep (waiting for an event to complete) å¯ä¸æé»å¡ï¼æ¤æ¶è¿ç¨æ£å¨çå¾
æä¸ªäºä»¶å®æ |
| Z | zombie (terminated but not reaped by its parent) 嵿»ï¼è¿ç¨å·²ç»ç»æ¢ä½æ¯å°æªè¢«å
¶ç¶è¿ç¨è·åä¿¡æ¯ |
| T | stopped (either by a job control signal or because it is being traced) ç»æï¼è¿ç¨æ¢å¯ä»¥è¢«ä½ä¸æ§å¶ä¿¡å·ç»æï¼ä¹å¯è½æ¯æ£å¨è¢«è¿½è¸ª |
å¤å¿è¿ç¨ï¼
* ä¸ä¸ªç¶è¿ç¨éåºï¼èå®çä¸ä¸ªæå¤ä¸ªåè¿ç¨è¿å¨è¿è¡ï¼é£ä¹è¿äºåè¿ç¨å°æä¸ºå¤å¿è¿ç¨
* å¤å¿è¿ç¨å°è¢« init è¿ç¨ææ¶å
»ï¼å¹¶ç± init è¿ç¨å¯¹å®ä»¬å®æç¶ææ¶éå·¥ä½
* å¤å¿è¿ç¨ä¼è¢« init è¿ç¨æ¶å
»ï¼æä»¥å¤å¿è¿ç¨ä¸ä¼å¯¹ç³»ç»é æå±å®³
åµå°¸è¿ç¨ï¼
* ä¸ä¸ªåè¿ç¨çè¿ç¨æè¿°ç¬¦å¨åè¿ç¨éåºæ¶ä¸ä¼éæ¾ï¼åªæå½ç¶è¿ç¨éè¿ wait() æ waitpid() è·åäºåè¿ç¨ä¿¡æ¯åæä¼éæ¾ã妿åè¿ç¨éåºï¼èç¶è¿ç¨å¹¶æ²¡æè°ç¨ wait() æ waitpid()ï¼é£ä¹åè¿ç¨çè¿ç¨æè¿°ç¬¦ä»ç¶ä¿åå¨ç³»ç»ä¸ï¼è¿ç§è¿ç¨ç§°ä¹ä¸ºåµå°¸è¿ç¨
* åµå°¸è¿ç¨éè¿ ps å½ä»¤æ¾ç¤ºåºæ¥çç¶æä¸º Zï¼zombieï¼
* ç³»ç»æè½ä½¿ç¨çè¿ç¨å·æ¯æéçï¼äº§ç大éåµå°¸è¿ç¨ï¼ä¼å¯¼è´ç³»ç»æ²¡æå¯ç¨çè¿ç¨å·èä¸è½äº§çæ°çè¿ç¨
* è¦æ¶çç³»ç»ä¸å¤§éçåµå°¸è¿ç¨ï¼åªéè¦å°å
¶ç¶è¿ç¨ææ»ï¼æ¤æ¶åµå°¸è¿ç¨å°±ä¼åæå¤å¿è¿ç¨ï¼ä»è被 init è¿ç¨ææ¶å
»ï¼è¿æ · init è¿ç¨å°±ä¼éæ¾ææçåµå°¸è¿ç¨æå æçèµæºï¼ä»èç»æåµå°¸è¿ç¨
è¡¥å
ï¼
* 宿¤è¿ç¨(daemon)æ¯ä¸ç±»å¨åå°è¿è¡çç¹æ®è¿ç¨ï¼ç¨äºæ§è¡ç¹å®çç³»ç»ä»»å¡ã
* 宿¤è¿ç¨æ¯è±ç¦»äºç»ç«¯å¹¶ä¸å¨åå°è¿è¡çè¿ç¨ï¼è±ç¦»ç»ç«¯æ¯ä¸ºäºé¿å
卿§è¡çè¿ç¨ä¸çä¿¡æ¯å¨ç»ç«¯ä¸æ¾ç¤ºï¼å¹¶ä¸è¿ç¨ä¹ä¸ä¼è¢«ä»»ä½ç»ç«¯æäº§ççç»ç«¯ä¿¡æ¯æææ
* å¾å¤å®æ¤è¿ç¨å¨ç³»ç»å¼å¯¼çæ¶åå¯å¨ï¼å¹¶ä¸ä¸ç´è¿è¡ç´å°ç³»ç»å
³éï¼å¦ä¸äºåªå¨éè¦çæ¶åæå¯å¨ï¼å®æä»»å¡åå°±èªå¨ç»æ
***
### ç¶ææ¹å
#### SIGCHLD
å½ä¸ä¸ªåè¿ç¨æ¹åäºå®çç¶ææ¶ï¼åæ¢è¿è¡ï¼ç»§ç»è¿è¡æè
éåºï¼ï¼æä¸¤ä»¶äºä¼åçå¨ç¶è¿ç¨ä¸ï¼
- å¾å° SIGCHLD ä¿¡å·
- waitpid() æè
wait() è°ç¨ä¼è¿å
åè¿ç¨åéç SIGCHLD ä¿¡å·å
å«äºåè¿ç¨çä¿¡æ¯ï¼æ¯å¦è¿ç¨ IDãè¿ç¨ç¶æãè¿ç¨ä½¿ç¨ CPU çæ¶é´çï¼å¨åè¿ç¨éåºæ¶ï¼å®çè¿ç¨æè¿°ç¬¦ä¸ä¼ç«å³éæ¾ï¼è¿æ¯ä¸ºäºè®©ç¶è¿ç¨å¾å°åè¿ç¨ä¿¡æ¯ï¼ç¶è¿ç¨éè¿ wait() å waitpid() æ¥è·å¾ä¸ä¸ªå·²ç»éåºçåè¿ç¨çä¿¡æ¯
***
#### wait
```c
pid_t wait(int *status)
```
åæ°ï¼status ç¨æ¥ä¿å被æ¶éçåè¿ç¨éåºæ¶çç¶æï¼å¦æä¸å
³å¿åè¿ç¨**å¦ä½**鿝ï¼å¯ä»¥è®¾ç½®è¿ä¸ªåæ°ä¸º NULL
ç¶è¿ç¨è°ç¨ wait() ä¼ä¸ç´é»å¡ï¼ç´å°æ¶å°ä¸ä¸ªåè¿ç¨éåºç SIGCHLD ä¿¡å·ï¼wait() 彿°å°±ä¼éæ¯åè¿ç¨å¹¶è¿å
* æåï¼è¿å被æ¶éçåè¿ç¨çè¿ç¨ ID
* 失败ï¼è¿å -1ï¼åæ¶ errno 被置为 ECHILDï¼å¦æè°ç¨è¿ç¨æ²¡æåè¿ç¨ï¼è°ç¨å°±ä¼å¤±è´¥ï¼
***
#### waitpid
```c
pid_t waitpid(pid_t pid, int *status, int options)
```
ä½ç¨å wait() å®å
¨ç¸åï¼åªæ¯å¤äºä¸¤ä¸ªå¯æ§å¶çåæ° pid å options
* pidï¼æç¤ºä¸ä¸ªåè¿ç¨ç IDï¼è¡¨ç¤ºåªå
³å¿è¿ä¸ªåè¿ç¨éåºç SIGCHLD ä¿¡å·ï¼å¦æ pid=-1 æ¶ï¼é£ä¹å wait() ä½ç¨ç¸åï¼é½æ¯å
³æ³¨ææåè¿ç¨éåºç SIGCHLD ä¿¡å·
* optionsï¼ä¸»è¦æ WNOHANG å WUNTRACED 两个ï¼WNOHANG å¯ä»¥ä½¿ waitpid() è°ç¨åæéé»å¡çï¼å°±æ¯ä¼ç«å³è¿åï¼ç¶è¿ç¨å¯ä»¥ç»§ç»æ§è¡å
¶å®ä»»å¡
***
## ç½ç»ç®¡ç
### network
+ å¯å¨ï¼service network start
+ 忢ï¼service network stop
+ éå¯ï¼service network restart
***
### ifconfig
ifconfig æ¯ Linux ä¸ç¨äºæ¾ç¤ºæé
ç½®ç½ç»è®¾å¤çå½ä»¤ï¼è±æå
¨ç§°æ¯ network interfaces configuring
ifconfig å½ä»¤ç¨äºæ¾ç¤ºæè®¾ç½®ç½ç»è®¾å¤ãifconfig å¯è®¾ç½®ç½ç»è®¾å¤çç¶æï¼ææ¯æ¾ç¤ºç®åç设置
```sh
ifconfig [ç½ç»è®¾å¤][down up -allmulti -arp -promisc][add<å°å>][del<å°å>][
**ens33ï¼æçæ¯eth0ï¼**表示第ä¸åç½å¡ã
表示 ens33 ç½å¡ç IPå°åæ¯ 192.168.0.137ï¼å¹¿æå°åï¼broadcast 192.168.0.255ï¼æ©ç å°ånetmask:255.255.255.0 ï¼inet6 对åºçæ¯ipv6
**lo** æ¯è¡¨ç¤ºä¸»æºçååå°åï¼è¿ä¸ªä¸è¬æ¯ç¨æ¥æµè¯ä¸ä¸ªç½ç»ç¨åºï¼ä½å䏿³è®©å±åç½æå¤ç½çç¨æ·è½å¤æ¥çï¼åªè½å¨æ¤å°ä¸»æºä¸è¿è¡åæ¥çæç¨çç½ç»æ¥å£
* ifconfig ens33 downï¼å
³éç½å¡
* ifconfig ens33 upï¼å¯ç¨ç½å¡
***
### ping
ping å½ä»¤ç¨äºæ£æµä¸»æºã
æ§è¡ ping æä»¤ä¼ä½¿ç¨ ICMP ä¼ è¾åè®®ï¼ååºè¦æ±ååºçä¿¡æ¯ï¼è¥è¿ç«¯ä¸»æºçç½ç»åè½æ²¡æé®é¢ï¼å°±ä¼ååºè¯¥ä¿¡æ¯ï¼å èå¾ç¥è¯¥ä¸»æºè¿ä½æ£å¸¸ã
```shell
ping [-dfnqrRv][-c<å®ææ¬¡æ°>][-i<é´éç§æ°>][-I<ç½ç»çé¢>][-l<å置载å
¥>][-p<èæ¬æ ·å¼>][-s<æ°æ®å
大å°>][-t<åæ´»æ°å¼>][主æºåç§°æIPå°å]
```
* -c<å®ææ¬¡æ°>ï¼è®¾ç½®å®æè¦æ±ååºç次æ°ï¼
* `ping -c 2 www.baidu.com`

icmp_seqï¼ping åºåï¼ä»1å¼å§
ttlï¼IP çåæ¶é´å¼
timeï¼ååºæ¶é´,æ°å¼è¶å°ï¼èéé度è¶å¿«
***
### netstat
netstat å½ä»¤ç¨äºæ¾ç¤ºç½ç»ç¶æ
```sh
netstat [-acCeFghilMnNoprstuvVwx][-A<ç½ç»ç±»å>][--ip]
```
- -a æ¾ç¤ºææè¿çº¿ä¸çSocketï¼æ¾ç¤ºè¯¦ç»çè¿æ¥ç¶åµ
- -i æ¾ç¤ºç½ç»çé¢ä¿¡æ¯è¡¨åï¼æ¾ç¤ºç½å¡å表
- -p æ¾ç¤ºæ£å¨ä½¿ç¨Socketçç¨åºè¯å«ç åç¨åºåç§°
- -n æ¾ç¤ºä½¿ç¨IPå°åï¼èä¸éè¿ååæå¡å¨
- -t æ¾ç¤ºTCPä¼ è¾åè®®çè¿çº¿ç¶åµã
- -u æ¾ç¤ºUDPä¼ è¾åè®®çè¿çº¿ç¶åµ
- **-aptnï¼æ¥çææTCPå¼å¯ç«¯å£**
- **-apunï¼æ¥çææUDPå¼å¯ç«¯å£**
è¡¥å
ï¼
* netstat -apn | grep portï¼æ¥çæå®ç«¯å£å·
* lsof -i:port ï¼æ¥çæå®ç«¯å£å·
***
## ç£ç管ç
### æè½½æ¦å¿µ
å¨å®è£
linuxç³»ç»æ¶è®¾ç«çå个ååºï¼å¦æ ¹ååºã/bootååºç齿¯èªå¨æè½½çï¼ä¹å°±æ¯è¯´ä¸éè¦æä»¬äººä¸ºæä½ï¼å¼æºå°±ä¼èªå¨æè½½ã使¯å
çãuççåå¨è®¾å¤å¦æéè¦ä½¿ç¨ï¼å°±å¿
须人为çè¿è¡æè½½ã
å
¶å®æä»¬å¨windows䏿å
¥Uç乿¯éè¦æè½½(åé
ç符)çï¼åªä¸è¿windowsä¸åé
ç符æ¯èªå¨çãå
¶å®æè½½å¯ä»¥ç解为Windowså½ä¸çåé
ç符ï¼éè¦ï¼ï¼åªä¸è¿windowså½ä¸æ¯ä»¥è±æåæ¯ABCDçä½ä¸ºç符ï¼èlinuxæ¯æ¿ç³»ç»ç®å½ä½ä¸ºç符ï¼å½ç¶linuxå½ä¸ä¹ä¸å«ç符ï¼èæ¯ç§°ä¸ºæè½½ç¹ï¼èæä¸ºååºæè
å
ççåå¨è®¾å¤åé
ä¸ä¸ªæè½½ç¹çè¿ç¨ç§°ä¸ºæè½½
Linuxä¸çæ ¹ç®å½ä»¥å¤çæä»¶è¦æ³è¢«è®¿é®ï¼éè¦å°å
¶âå
³èâå°æ ¹ç®å½ä¸çæä¸ªç®å½æ¥å®ç°ï¼è¿ç§å
³èæä½å°±æ¯âæè½½âï¼è¿ä¸ªç®å½å°±æ¯âæè½½ç¹âï¼è§£é¤æ¬¡å
³èå
³ç³»çè¿ç¨ç§°ä¹ä¸ºâå¸è½½âã
**注æï¼âæè½½ç¹âçç®å½éè¦ä»¥ä¸å ä¸ªè¦æ±ï¼**
ï¼1ï¼ç®å½è¦å
åå¨ï¼å¯ä»¥ç¨mkdirå½ä»¤æ°å»ºç®å½ï¼
ï¼2ï¼æè½½ç¹ç®å½ä¸å¯è¢«å
¶ä»è¿ç¨ä½¿ç¨å°ï¼
ï¼3ï¼æè½½ç¹ä¸åææä»¶å°è¢«éèã
### lsblk
lsblkå½ä»¤çè±ææ¯âlist blockâï¼å³ç¨äºååºææå¯ç¨å设å¤çä¿¡æ¯ï¼èä¸è¿è½æ¾ç¤ºä»ä»¬ä¹é´çä¾èµå
³ç³»ï¼ä½æ¯å®ä¸ä¼ååºRAMççä¿¡æ¯ã
å½ä»¤ï¼lsblk [åæ°]
* `lsblk`ï¼ä»¥æ ç¶ååºææå设å¤

NAME : è¿æ¯å设å¤åã
MAJ:MIN : æ¬æ æ¾ç¤ºä¸»è¦å次è¦è®¾å¤å·ã
RM : æ¬æ æ¾ç¤ºè®¾å¤æ¯å¦å¯ç§»å¨è®¾å¤ã注æï¼å¨ä¸é¢è®¾å¤sr0çRMå¼çäº1ï¼è¿è¯´æä»ä»¬æ¯å¯ç§»å¨è®¾å¤ã
SIZE : æ¬æ ååºè®¾å¤ç容é大å°ä¿¡æ¯ã
RO : 该项表æè®¾å¤æ¯å¦ä¸ºåªè¯»ã卿¬æ¡ä¾ä¸ï¼ææè®¾å¤çROå¼ä¸º0ï¼è¡¨æä»ä»¬ä¸æ¯åªè¯»çã
TYPE :æ¬æ æ¾ç¤ºåè®¾å¤æ¯å¦æ¯ç£çæç£çä¸çä¸ä¸ªååºã卿¬ä¾ä¸ï¼sdaåsdbæ¯ç£çï¼èsr0æ¯åªè¯»åå¨ï¼romï¼ã
MOUNTPOINT : æ¬æ æåºè®¾å¤æè½½çæè½½ç¹ã
* `lsblk -f`ï¼ä¸ä¼ååºææç©ºè®¾å¤

NAME表示设å¤åç§°
FSTYPE表示æä»¶ç±»å
LABELè¡¨ç¤ºè®¾å¤æ ç¾
UUID设å¤ç¼å·
MOUNTPOINT表示设å¤çæè½½ç¹
### df
dfå½ä»¤ç¨äºæ¾ç¤ºç®åå¨Linuxç³»ç»ä¸çæä»¶ç³»ç»çç£çä½¿ç¨æ
åµç»è®¡ã
å½ä»¤ï¼df [options]... [FILE]...
* -h, 使ç¨äººç±»å¯è¯»çæ ¼å¼(é¢è®¾å¼æ¯ä¸å è¿ä¸ªé项ç...)
* --total è®¡ç®ææçæ°æ®ä¹å

第ä¸åæå®æä»¶ç³»ç»çåç§°
第äºåæå®ä¸ä¸ªç¹å®çæä»¶ç³»ç»1K-å1Kæ¯1024åè为åä½çæ»å®¹éã
å·²ç¨åå¯ç¨åå嫿å®ç容éã
æåä¸ä¸ªå·²ç¨åæå®ä½¿ç¨ç容éçç¾åæ¯
æå䏿 æå®çæä»¶ç³»ç»çæè½½ç¹ã
### mount
mountå½ä»¤æ¯ç»å¸¸ä¼ä½¿ç¨å°çå½ä»¤ï¼å®ç¨äºæè½½Linuxç³»ç»å¤çæä»¶ã
使ç¨è
æéï¼ææç¨æ·ï¼è®¾ç½®çº§å«çéè¦ç®¡çå
```sh
mount [-hV]
mount -a [-fFnrsvw] [-t vfstype]
mount [-fnrsvw] [-o options [,...]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
```
- -tï¼æå®æ¡£æ¡ç³»ç»çåæï¼é常ä¸å¿
æå®ãmount ä¼èªå¨éæ©æ£ç¡®çåæã
éè¿æè½½çæ¹å¼æ¥çLinux CD/DVDå
é©±ï¼æ¥ç ubuntu-20.04.1-desktop-amd64.isoçæä»¶
* è¿å
¥ãèææºã--ã设置ãï¼è®¾ç½®CD/DVDçå
容ï¼ubuntu-20.04.1-desktop-amd64.iso
* å建æè½½ç¹ï¼æ³¨æï¼ä¸è¬ç¨æ·æ æ³æè½½cdromï¼åªærootç¨æ·æå¯ä»¥æä½ï¼
`mkdir -p /mnt/cdrom `ï¼åæ¢å°rootä¸å建ä¸ä¸ªæè½½ç¹ï¼å
¶å®å°±æ¯å建ä¸ä¸ªç®å½ï¼
* å¼å§æè½½
`mount -t auto /dev/cdrom /mnt/cdrom`ï¼éè¿æè½½ç¹çæ¹å¼æ¥çä¸é¢çãISOæä»¶å
容ã

* æ¥çæè½½å
容ï¼`ls -l -a ./mnt/cdrom/`
* å¸è½½ cdromï¼`umount /mnt/cdrom/`
***
## é²ç«å¢
### æ¦è¿°
é²ç«å¢ææ¯æ¯éè¿ææºç»ååç±»ç¨äºå®å
¨ç®¡çä¸çéç软件å硬件设å¤ï¼å¸®å©è®¡ç®æºç½ç»äºå
¶å
ãå¤ç½ä¹é´æå»ºä¸éç¸å¯¹éç»çä¿æ¤å±éï¼ä»¥ä¿æ¤ç¨æ·èµæä¸ä¿¡æ¯å®å
¨æ§çä¸ç§ææ¯ã
å¨é»è®¤æ
åµä¸ï¼Linuxç³»ç»çé²ç«å¢ç¶ææ¯æå¼çï¼å·²ç»å¯å¨ã
### ç¶æ
**å¯å¨è¯æ³ï¼service æå¡ status**
* æ¥çé²ç«å¢ç¶æï¼`service iptables status`
* 临æ¶å¼å¯ï¼`service iptables start`
* 临æ¶å
³éï¼`service iptables stop`
* 弿ºå¯å¨ï¼`chkconfig iptables on`
* 弿ºå
³éï¼`chkconfig iptables off`
### æ¾è¡
设置端å£é²ç«å¢æ¾è¡
* ä¿®æ¹é
ç½®æä»¶ï¼`vim /etc/sysconfig/iptables`
* æ·»å æ¾è¡ç«¯å£ï¼`-A INPUT -m state --state NEW -m tcp -p tcp --dport 端å£å· -j ACCEPT`
* éæ°å è½½é²ç«å¢è§åï¼`service iptables reload`
夿³¨ï¼é»è®¤æ
åµä¸22端å£å·æ¯æ¾è¡ç
***
## Shell
> shell èæ¬ç±»ä¼¼äºæä»¬å¨ Windows ä¸ç¼åçæ¹å¤çæä»¶ï¼å®çæ©å±åæ¯.batï¼æ¯å¦æä»¬å¯å¨ Tomcatï¼åé¢çè¯¾ç¨æä»¬ä¼è¯¦ç»è®²è§£ï¼çæ¶åç»å¸¸å¯å¨ç startup.batï¼å°±æ¯ Windows ä¸çæ¹å¤çæä»¶ã
> èå¨ Linux ä¸ï¼shellèæ¬ç¼åçæä»¶æ¯ä»¥ .sh ç»å°¾çãæ¯å¦ Tomcat 䏿们ç»å¸¸ä½¿ç¨ startup.sh æ¥å¯å¨æä»¬ç Tomcatï¼è¿ä¸ª startup.sh æä»¶å°±æ¯ shell ç¼åçã
### å
¥é¨
#### æ¦å¿µ
Shell èæ¬ï¼shell scriptï¼ï¼æ¯ä¸ç§ä¸º shell ç¼åçèæ¬ç¨åºã
[Shell](https://www.leiue.com/tags/shell) [èæ¬](https://www.leiue.com/tags/èæ¬)ï¼[Shell Script](https://www.leiue.com/tags/shell-script)ï¼åç§° Shell å½ä»¤ç¨¿ãç¨åºåèæ¬ï¼æ¯ä¸ç§è®¡ç®æºç¨åºä½¿ç¨çææ¬æä»¶ï¼å
容ç±ä¸è¿ä¸²ç shell å½ä»¤ç»æï¼ç»ç± Unix Shell ç´è¯å
¶å
容åè¿ä½ãShell è¢«å½ææ¯ä¸ç§èæ¬è¯è¨æ¥è®¾è®¡ï¼å
¶è¿ä½æ¹å¼ä¸è§£éåè¯è¨ç¸å½ï¼ç± Unix shell æ®æ¼å½ä»¤è¡è§£éå¨çè§è²ï¼å¨è¯»å shell èæ¬ä¹åï¼ä¾åºè¿è¡å
¶ä¸ç shell å½ä»¤ï¼ä¹åè¾åºç»æãå©ç¨ shell èæ¬å¯ä»¥è¿è¡ç³»ç»ç®¡çï¼æä»¶æä½çã
#### ç¯å¢
Shell ç¼ç¨è· JavaScriptãphp ç¼ç¨ä¸æ ·ï¼åªè¦æä¸ä¸ªè½ç¼å代ç çææ¬ç¼è¾å¨åä¸ä¸ªè½è§£éæ§è¡çèæ¬è§£éå¨å°±å¯ä»¥äºã
`cat /etc/shells`ï¼æ¥çè§£éå¨

Linux ç Shell ç§ç±»ä¼å¤ï¼å¸¸è§çæï¼
- Bourne Shellï¼/usr/bin/shæ/bin/shï¼
- Bourne Again Shellï¼/bin/bashï¼
- C Shellï¼/usr/bin/cshï¼
- K Shellï¼/usr/bin/kshï¼
- Shell for Rootï¼/sbin/shï¼
- ççâ¦â¦
æä»¬å½å课ç¨ä½¿ç¨çæ¯ Bashï¼ä¹å°±æ¯ Bourne Again Shellï¼ç±äºæç¨åå
è´¹ï¼Bash 卿¥å¸¸å·¥ä½ä¸è¢«å¹¿æ³ä½¿ç¨ãåæ¶ï¼Bash 乿¯å¤§å¤æ°Linux ç³»ç»é»è®¤ç Shell
#### 第ä¸ä¸ªshell
* æ°å»ºs.shæä»¶ï¼touch s.sh
* ç¼è¾s.shæä»¶ï¼vim s.sh
```shell
#!/bin/bash --- æå®èæ¬è§£éå¨
echo "ä½ å¥½ï¼shell !" ---åçªå£è¾å
¥ææ¬
:<<!
åshellçä¹ æ¯ ç¬¬ä¸è¡æå®è§£éå¨
æä»¶æ¯sh为åç¼å
æ¬å·æå¯¹ä¹¦å
注éçæ¶åå°½éä¸ç¨ä¸ææ³¨éãä¸å好ã
[] æ¬å·ä¸¤ç«¯è¦è¦æç©ºæ ¼ã [ neirong ]
ä¹ æ¯ä»£ç ç´¢å¼ï¼å¢å é
读æ§
åè¯å¥çæ¶åï¼å°½éåå
¨äºï¼æ¯å¦ifããã
!
```
* æ¥ç s.shæä»¶ï¼ls -l s.shæä»¶æéæ¯ã-rw-rw-r--ã
* chmod a+x s.sh s.shæä»¶æéæ¯ã-rwxrwxr-xã
* æ§è¡æä»¶ï¼./s.sh
* æè
ç´æ¥ `bash s.sh`
**注æï¼**
**#!** æ¯ä¸ä¸ªçº¦å®çæ è®°ï¼å®åè¯ç³»ç»è¿ä¸ªèæ¬éè¦ä»ä¹è§£é卿¥æ§è¡ï¼å³ä½¿ç¨åªä¸ç§ Shellã
echo å½ä»¤ç¨äºåçªå£è¾åºææ¬ã
***
### 注é
* åè¡æ³¨éï¼ä»¥ **#** å¼å¤´çè¡å°±æ¯æ³¨éï¼ä¼è¢«è§£éå¨å¿½ç¥
* å¤è¡æ³¨éï¼
```shell
:<
**æ°æ®å·**ï¼æ°æ®å·æ¯å®¿ä¸»æºä¸çä¸ä¸ªç®å½ææä»¶ï¼å½å®¹å¨ç®å½åæ°æ®å·ç®å½ç»å®åï¼å¯¹æ¹çä¿®æ¹ä¼ç«å³åæ¥
* ä¸ä¸ªæ°æ®å·å¯ä»¥è¢«å¤ä¸ªå®¹å¨åæ¶æè½½
* ä¸ä¸ªå®¹å¨ä¹å¯ä»¥è¢«æè½½å¤ä¸ªæ°æ®å·
æ°æ®å·çä½ç¨ï¼
* 容卿°æ®æä¹
å
* å¤é¨æºå¨å容å¨é´æ¥éä¿¡
* 容å¨ä¹é´æ°æ®äº¤æ¢
é
ç½®æ°æ®å·
* å建å¯å¨å®¹å¨æ¶ï¼ä½¿ç¨-våæ°è®¾ç½®æ°æ®å·
```sh
docker run ... âv 宿主æºç®å½(æä»¶):容å¨å
ç®å½(æä»¶) ...
docker run -it --name=c1 -v /root(or~)/data:/root/data_container centos:7
```
注æäºé¡¹ï¼
1. ç®å½å¿
é¡»æ¯ç»å¯¹è·¯å¾
2. 妿ç®å½ä¸åå¨ï¼ä¼èªå¨å建
3. å¯ä»¥æè½½å¤ä¸ªæ°æ®å·
å¤å®¹å¨è¿è¡æ°æ®äº¤æ¢ï¼
* å¤ä¸ªå®¹å¨æè½½åä¸ä¸ªæ°æ®å·
* æ°æ®å·å®¹å¨
* å建å¯å¨c3æ°æ®å·å®¹å¨ï¼ä½¿ç¨ âv åæ°è®¾ç½®æ°æ®å·
```sh
docker run âit --name=c3 âv /volume centos:7 /bin/bash
```
* å建å¯å¨ c1 c2 容å¨ï¼ä½¿ç¨ â-volumes-from åæ°è®¾ç½®æ°æ®å·
```sh
docker run âit --name=c1 --volumes-from c3 centos:7 /bin/bash
docker run âit --name=c2 --volumes-from c3 centos:7 /bin/bash
```
***
## åºç¨é¨ç½²
### MySQL
å¨Docker容å¨ä¸é¨ç½²MySQLï¼éè¿å¤é¨mysql客æ·ç«¯æä½MySQL Server
ç«¯å£æ å°ï¼
* 容å¨å
çç½ç»æå¡åå¤é¨æºå¨ä¸è½ç´æ¥éä¿¡ï¼å¤é¨æºå¨å宿主æºå¯ä»¥ç´æ¥éä¿¡ï¼å®¿ä¸»æºå容å¨å¯ä»¥ç´æ¥éä¿¡
* å½å®¹å¨ä¸çç½ç»æå¡éè¦è¢«å¤é¨æºå¨è®¿é®æ¶ï¼å¯ä»¥å°å®¹å¨ä¸æä¾æå¡çç«¯å£æ å°å°å®¿ä¸»æºç端å£ä¸ãå¤é¨æºå¨è®¿é®å®¿ä¸»æºç该端å£ï¼ä»èé´æ¥è®¿é®å®¹å¨çæå¡ãè¿ç§æä½ç§°ä¸ºï¼**ç«¯å£æ å°**

MySQLé¨ç½²æ¥éª¤ï¼æç´¢mysqléåï¼æåmysqléåï¼å建容å¨ï¼æä½å®¹å¨ä¸çmysql
1. æç´¢mysqléå
```sh
docker search mysql
```
2. æåmysqléå
```mysql
docker pull mysql:5.6
```
3. å建容å¨ï¼è®¾ç½®ç«¯å£æ å°ãç®å½æ å°
```sh
# å¨/rootç®å½ä¸å建mysqlç®å½ç¨äºåå¨mysqlæ°æ®ä¿¡æ¯
mkdir ~/mysql
cd ~/mysql
```
```sh
docker run -id \
-p 3307:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6
```
åæ°è¯´æï¼
* `-p 3307:3306`ï¼å°å®¹å¨ç 3306 ç«¯å£æ å°å°å®¿ä¸»æºç 3307 端å£
* `-v $PWD/conf:/etc/mysql/conf.d`ï¼å°ä¸»æºå½åç®å½ä¸ç conf/my.cnf æè½½å°å®¹å¨ç /etc/mysql/my.cnfï¼é
ç½®ç®å½
* `-v $PWD/logs:/logs`ï¼å°ä¸»æºå½åç®å½ä¸ç logsç®å½æè½½å°å®¹å¨ç /logsï¼æ¥å¿ç®å½
* `-v $PWD/data:/var/lib/mysql` ï¼å°ä¸»æºå½åç®å½ä¸çdataç®å½æè½½å°å®¹å¨ç /var/lib/mysql ãæ°æ®ç®å½
* `-e MYSQL_ROOT_PASSWORD=123456`**ï¼**åå§å root ç¨æ·çå¯ç ã
4. è¿å
¥å®¹å¨ï¼æä½mysql
```sh
docker exec âit c_mysql /bin/bash
```
5. 使ç¨å¤é¨æºå¨è¿æ¥å®¹å¨ä¸çmysql
****
### Tomcat
1. æç´¢tomcatéå
```sh
docker search tomcat
```
2. æåtomcatéå
```sh
docker pull tomcat
```
3. å建容å¨ï¼è®¾ç½®ç«¯å£æ å°ãç®å½æ å°
```sh
# å¨/rootç®å½ä¸å建tomcatç®å½ç¨äºåå¨tomcatæ°æ®ä¿¡æ¯
mkdir ~/tomcat
cd ~/tomcat
```
```sh
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat
```
åæ°è¯´æï¼
* `-p 8080:8080`ï¼å°å®¹å¨ç8080ç«¯å£æ å°å°ä¸»æºç8080端å£
* `-v $PWD:/usr/local/tomcat/webapps`ï¼å°ä¸»æºä¸å½åç®å½æè½½å°å®¹å¨çwebapps
4. 使ç¨å¤é¨æºå¨è®¿é®tomcat
***
### Nginx
1. æç´¢nginxéå
```sh
docker search nginx
```
2. æånginxéå
```sh
docker pull nginx
```
3. å建容å¨ï¼è®¾ç½®ç«¯å£æ å°ãç®å½æ å°
```sh
# å¨/rootç®å½ä¸å建nginxç®å½ç¨äºåå¨nginxæ°æ®ä¿¡æ¯
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# å¨~/nginx/conf/ä¸å建nginx.confæä»¶,ç²è´´ä¸é¢å
容
vim nginx.conf
```
```sh
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
```
```sh
docker run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
```
åæ°è¯´æï¼
* `-p 80:80`ï¼å°å®¹å¨ç 80ç«¯å£æ å°å°å®¿ä¸»æºç 80 端å£
* `-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf`ï¼å°ä¸»æºå½åç®å½ä¸ç /conf/nginx.conf æè½½å°å®¹å¨ç :/etc/nginx/nginx.confï¼é
ç½®ç®å½
* `-v $PWD/logs:/var/log/nginx`ï¼å°ä¸»æºå½åç®å½ä¸ç logs ç®å½æè½½å°å®¹å¨ç/var/log/nginxï¼æ¥å¿ç®å½
4. 使ç¨å¤é¨æºå¨è®¿é®nginx
***
### Redis
1. æç´¢rediséå
```sh
docker search redis
```
2. æårediséå
```sh
docker pull redis:5.0
```
3. å建容å¨ï¼è®¾ç½®ç«¯å£æ å°
```sh
docker run -id --name=c_redis -p 6379:6379 redis:5.0
```
4. 使ç¨å¤é¨æºå¨è¿æ¥redis
```sh
./redis-cli.exe -h 192.168.149.135 -p 6379
```
***
## éååç
### åºå±åç
> Docker éåæ¬è´¨æ¯ä»ä¹ï¼
> Docker ä¸ä¸ä¸ªcentoséå为ä»ä¹åªæ200MBï¼èä¸ä¸ªcentosæä½ç³»ç»çisoæä»¶è¦å 个个Gï¼
> Docker ä¸ä¸ä¸ªtomcatéå为ä»ä¹æ500MBï¼èä¸ä¸ªtomcatå®è£
å
åªæ70å¤MBï¼
æä½ç³»ç»çç»æé¨åï¼è¿ç¨è°åº¦åç³»ç»ãè¿ç¨éä¿¡åç³»ç»ãå
å管çåç³»ç»ã设å¤ç®¡çåç³»ç»ãæä»¶ç®¡çåç³»ç»ãç½ç»éä¿¡åç³»ç»ãä½ä¸æ§å¶åç³»ç»
Linuxæä»¶ç³»ç»ç±bootfsårootfs两é¨åç»æï¼
* bootfsï¼å
å«bootloaderï¼å¼å¯¼å è½½ç¨åºï¼å kernelï¼å
æ ¸ï¼
* rootfsï¼ rootæä»¶ç³»ç»ï¼å
å«çå°±æ¯å
¸å Linux ç³»ç»ä¸ç/devï¼/procï¼/binï¼/etcçæ åç®å½åæä»¶
* ä¸åçlinuxåè¡çï¼bootfsåºæ¬ä¸æ ·ï¼èrootfsä¸åï¼å¦ubuntuï¼centos
Dockeréååçï¼
* Dockeré忝ä¸ä¸ª**åå±æä»¶ç³»ç»**ï¼æ¯ç±ç¹æ®çæä»¶ç³»ç»å å èæï¼æåºç«¯æ¯ bootfsï¼å¹¶å¤ç¨å®¿ä¸»æºçbootfs ï¼ç¬¬äºå±æ¯ rootæä»¶ç³»ç»rootfs称为base imageï¼ç¶ååå¾ä¸å¯ä»¥å å å
¶ä»çéåæä»¶
* ç»ä¸æä»¶ç³»ç»ï¼Union File Systemï¼ææ¯è½å¤å°ä¸åç屿´åæä¸ä¸ªæä»¶ç³»ç»ï¼ä¸ºè¿äºå±æä¾äºä¸ä¸ªç»ä¸çè§è§ï¼è¿æ ·å°±éèäºå¤å±çåå¨ï¼å¨ç¨æ·çè§åº¦çæ¥ï¼åªåå¨ä¸ä¸ªæä»¶ç³»ç»
* ä¸ä¸ªéåå¯ä»¥æ¾å¨å¦ä¸ä¸ªéåçä¸é¢ãä½äºä¸é¢çéå称为ç¶éåï¼æåºé¨çéåæä¸ºåºç¡éåã
* å½ä»ä¸ä¸ªéåå¯å¨å®¹å¨æ¶ï¼Dockerä¼å¨æé¡¶å±å è½½ä¸ä¸ªè¯»åæä»¶ç³»ç»ä½ä¸ºå®¹å¨
é®é¢ï¼
* Docker ä¸ä¸ä¸ªUbuntuéå为ä»ä¹åªæ200MBï¼èä¸ä¸ªUbuntuæä½ç³»ç»çisoæä»¶è¦å 个个Gï¼
Ubuntuçisoéåæä»¶å
å«bootfsårootfsï¼èdockerçUbuntuéåå¤ç¨æä½ç³»ç»çbootfsï¼åªærootfsåå
¶ä»éåå±
* Docker ä¸ä¸ä¸ªtomcatéå为ä»ä¹æ500MBï¼èä¸ä¸ªtomcatå®è£
å
åªæ70å¤MBï¼
ç±äºdockerä¸é忝åå±çï¼tomcatè½ç¶åªæ70å¤MBï¼ä½ä»éè¦ä¾èµäºç¶éåååºç¡éåï¼æææ´ä¸ªå¯¹å¤æ´é²çtomcatéå大å°500å¤MB
***
### éåå¶ä½

****
### Dockerfile
#### åºæ¬æ¦è¿°
Dockerfileæ¯ä¸ä¸ªææ¬æä»¶ï¼å
å«ä¸æ¡æ¡çæä»¤ï¼æ¯ä¸æ¡æä»¤æå»ºä¸å±ï¼åºäºåºç¡éåæç»æå»ºåºæ°çéå
* 对äºå¼å人åï¼å¯ä»¥ä¸ºå¼åå¢éæä¾ä¸ä¸ªå®å
¨ä¸è´çå¼åç¯å¢
* å¯¹äºæµè¯äººåï¼å¯ä»¥ç´æ¥æ¿å¼åæ¶ææå»ºçéåæè
éè¿Dockerfileæä»¶æå»ºä¸ä¸ªæ°çéåå¼å§å·¥ä½äº
* 对äºè¿ç»´äººåï¼å¨é¨ç½²æ¶ï¼å¯ä»¥å®ç°åºç¨çæ ç¼ç§»æ¤
| å
³é®å | ä½ç¨ | 夿³¨ |
| ----------- | ------------------------ | ------------------------------------------------------------ |
| FROM | æå®ç¶éå | æå®dockerfileåºäºé£ä¸ªimageæå»º |
| MAINTAINER | ä½è
ä¿¡æ¯ | ç¨æ¥æ æè¿ä¸ªdockerfileè°åç |
| LABEL | æ ç¾ | ç¨æ¥æ ædockerfileçæ ç¾ å¯ä»¥ä½¿ç¨Label代æ¿Maintainer æç»é½æ¯å¨docker imageåºæ¬ä¿¡æ¯ä¸å¯ä»¥æ¥ç |
| RUN | æ§è¡å½ä»¤ | æ§è¡ä¸æ®µå½ä»¤ é»è®¤æ¯/bin/sh æ ¼å¼: RUN command æè
RUN ["command" , "param1","param2"] |
| CMD | 容å¨å¯å¨å½ä»¤ | æä¾å¯å¨å®¹å¨æ¶åçé»è®¤å½ä»¤ åENTRYPOINTé
å使ç¨.æ ¼å¼ CMD command param1 param2 æè
CMD ["command" , "param1","param2"] |
| ENTRYPOINT | å
¥å£ | ä¸è¬å¨å¶ä½ä¸äºæ§è¡å°±å
³éç容å¨ä¸ä¼ä½¿ç¨ |
| COPY | å¤å¶æä»¶ | buildçæ¶åå¤å¶æä»¶å°imageä¸ |
| ADD | æ·»å æä»¶ | buildçæ¶åæ·»å æä»¶å°imageä¸ ä¸ä»
ä»
å±éäºå½åbuildä¸ä¸æ å¯ä»¥æ¥æºäºè¿ç¨æå¡ |
| ENV | ç¯å¢åé | æå®buildæ¶åçç¯å¢åé å¯ä»¥å¨å¯å¨ç容å¨çæ¶å éè¿-eè¦ç æ ¼å¼ENV name=value |
| ARG | æå»ºåæ° | æå»ºåæ° åªå¨æå»ºçæ¶å使ç¨çåæ° 妿æENV é£ä¹ENVçç¸åååçå¼å§ç»è¦çargçåæ° |
| VOLUME | å®ä¹å¤é¨å¯ä»¥æè½½çæ°æ®å· | æå®buildçimageé£äºç®å½å¯ä»¥å¯å¨çæ¶åæè½½å°æä»¶ç³»ç»ä¸ å¯å¨å®¹å¨çæ¶åä½¿ç¨ -v ç»å® æ ¼å¼ VOLUME ["ç®å½"] |
| EXPOSE | æ´é²ç«¯å£ | å®ä¹å®¹å¨è¿è¡çæ¶åçå¬çç«¯å£ å¯å¨å®¹å¨ç使ç¨-pæ¥ç»å®æ´é²ç«¯å£ æ ¼å¼: EXPOSE 8080 æè
EXPOSE 8080/udp |
| WORKDIR | å·¥ä½ç®å½ | æå®å®¹å¨å
é¨çå·¥ä½ç®å½ å¦ææ²¡æå建åèªå¨å建 妿æå®/ 使ç¨çæ¯ç»å¯¹å°å 妿䏿¯/å¼å¤´é£ä¹æ¯å¨ä¸ä¸æ¡workdirçè·¯å¾çç¸å¯¹è·¯å¾ |
| USER | æå®æ§è¡ç¨æ· | æå®buildæè
å¯å¨çæ¶å ç¨æ· å¨RUN CMD ENTRYPONTæ§è¡çæ¶åçç¨æ· |
| HEALTHCHECK | å¥åº·æ£æ¥ | æå®çæµå½å容å¨çå¥åº·çæµçå½ä»¤ åºæ¬ä¸æ²¡ç¨ å 为å¾å¤æ¶å åºç¨æ¬èº«æå¥åº·çæµæºå¶ |
| ONBUILD | 触åå¨ | å½åå¨ONBUILDå
³é®åçéåä½ä¸ºåºç¡éåçæ¶å 彿§è¡FROM宿ä¹å 伿§è¡ ONBUILDçå½ä»¤ 使¯ä¸å½±åå½åéå ç¨å¤ä¹ä¸æä¹å¤§ |
| STOPSIGNAL | åéä¿¡å·éå°å®¿ä¸»æº | 该STOPSIGNALæä»¤è®¾ç½®å°åéå°å®¹å¨çç³»ç»è°ç¨ä¿¡å·ä»¥éåºã |
| SHELL | æå®æ§è¡èæ¬çshell | æå®RUN CMD ENTRYPOINT æ§è¡å½ä»¤çæ¶å 使ç¨çshell |
#### Centos
èªå®ä¹centos7éåï¼
1. é»è®¤ç»å½è·¯å¾ä¸º /usr
2. å¯ä»¥ä½¿ç¨vim
å®ç°æ¥éª¤ï¼
1. å®ä¹ç¶éåï¼FROM centos:7
2. å®ä¹ä½è
ä¿¡æ¯ï¼MAINTAINER seazean < [email protected]>
3. æ§è¡å®è£
vimå½ä»¤ï¼ RUN yum install -y vim
4. å®ä¹é»è®¤çå·¥ä½ç®å½ï¼WORKDIR /usr
5. å®ä¹å®¹å¨å¯å¨æ§è¡çå½ä»¤ï¼CMD /bin/bash
6. éè¿dockerfileæå»ºéåï¼docker bulid âf dockerfileæä»¶è·¯å¾ ât éååç§°:çæ¬
#### Boot
å®ä¹dockerfileï¼åå¸springboot项ç®ï¼
å®ç°æ¥éª¤ï¼
1. å®ä¹ç¶éåï¼FROM java:8
2. å®ä¹ä½è
ä¿¡æ¯ï¼MAINTAINER seazean < [email protected]>
3. å°jarå
æ·»å å°å®¹å¨ï¼ ADD springboot.jar app.jar
4. å®ä¹å®¹å¨å¯å¨æ§è¡çå½ä»¤ï¼CMD javaâjar app.jar
5. éè¿dockerfileæå»ºéåï¼docker bulid âf dockerfileæä»¶è·¯å¾ ât éååç§°:çæ¬
***
## æå¡ç¼æ
### åºæ¬ä»ç»
å¾®æå¡æ¶æçåºç¨ç³»ç»ä¸ä¸è¬å
å«è¥å¹²ä¸ªå¾®æå¡ï¼æ¯ä¸ªå¾®æå¡ä¸è¬é½ä¼é¨ç½²å¤ä¸ªå®ä¾ï¼å¦ææ¯ä¸ªå¾®æå¡é½è¦æå¨å¯åï¼ç»´æ¤çå·¥ä½éä¼å¾å¤§ã
* ä»Dockerfile build image æè
å»dockerhubæåimageï¼
* å建å¤ä¸ªcontainerï¼ç®¡çè¿äºcontainerï¼å¯å¨åæ¢å é¤ï¼
**æå¡ç¼æ**ï¼æç
§ä¸å®çä¸å¡è§åæ¹é管ç容å¨
Docker Composeæ¯ä¸ä¸ªç¼æå¤å®¹å¨åå¸å¼é¨ç½²çå·¥å
·ï¼æä¾å½ä»¤é管ç容å¨ååºç¨ç宿´å¼å卿ï¼å
æ¬æå¡æå»ºï¼å¯å¨å忢ãä½¿ç¨æ¥éª¤ï¼
1. å©ç¨ Dockerfile å®ä¹è¿è¡ç¯å¢éå
2. ä½¿ç¨ docker-compose.yml å®ä¹ç»æåºç¨çåæå¡
3. è¿è¡ docker-compose up å¯å¨åºç¨

***
### åè½å®ç°
使ç¨docker composeç¼ænginx+springboot项ç®
1. å®è£
Docker Compose
2. å建docker-composeç®å½
```sh
mkdir ~/docker-compose
cd ~/docker-compose
```
3. ç¼å docker-compose.yml æä»¶
```sh
version: '3'
services:
nginx:
image: nginx
ports:
- 80:80
links:
- app
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
app:
image: app
expose:
- "8080"
```
4. å建./nginx/conf.dç®å½
```sh
mkdir -p ./nginx/conf.d
```
5. å¨./nginx/conf.dç®å½ä¸ç¼å***.confæä»¶
```sh
server {
listen 80;
access_log off;
location / {
proxy_pass http://app:8080;
}
}
```
6. å¨~/docker-compose ç®å½ä¸ä½¿ç¨docker-composeå¯å¨å®¹å¨
```sh
docker-compose up
```
7. æµè¯è®¿é®
```sh
http://192.168.0.137/hello
```
***
## ç§æä»åº
Docker宿¹çDocker hubï¼https://hub.docker.comï¼æ¯ä¸ä¸ªç¨äºç®¡çå
Œ
±éåçä»åºï¼æä»¬å¯ä»¥ä»ä¸é¢æåéå å°æ¬å°ï¼ä¹å¯ä»¥ææä»¬èªå·±çé忍éä¸å»ã使¯å½æå¡å¨æ æ³è®¿é®äºèç½ï¼æè
ä¸å¸æå°èªå·±çéåæ¾å°å
¬ç½å½ä¸ï¼é£ä¹æä»¬å°±éè¦æå»ºèªå·±çç§æä»åºæ¥åå¨å管çèªå·±çéå
* ç§æä»åºæå»º
```sh
# 1ãæåç§æä»åºéå
docker pull registry
# 2ãå¯å¨ç§æä»åºå®¹å¨
docker run -id --name=registry -p 5000:5000 registry
# 3ãè¾å
¥å°åhttp://ç§æä»åºæå¡å¨ip:5000/v2/_catalogï¼æ¾ç¤º{"repositories":[]}
# 4ãä¿®æ¹daemon.json Â
vim /etc/docker/daemon.json  Â
# å¨ä¸è¿°æä»¶ä¸æ·»å ä¸ä¸ªkeyï¼ä¿åéåºãæ¤æ¥ç¨äºè®© docker ä¿¡ä»»ç§æä»åºå°åï¼æ³¨æå°ç§æä»åºæå¡å¨ipä¿®æ¹ä¸ºèªå·±ç§æä»åºæå¡å¨çå®ip
{"insecure-registries":["192.168.0.137:5000"]}
# 5ãéå¯docker æå¡
systemctl restart docker
docker start registry
```
* å°éåä¸ä¼ è³ç§æä»åº
```sh
# 1ãæ è®°éåä¸ºç§æä»åºçéå  Â
docker tag centos:7 ç§æä»åºæå¡å¨IP:5000/centos:7
# 2ãä¸ä¼ æ è®°çéå  Â
docker push ç§æä»åºæå¡å¨IP:5000/centos:7
```
* ä»ç§æä»åºæåéå
```sh
#æåéå
docker pull ç§æä»åºæå¡å¨ip:5000/centos:7
```
***
## èææº
容å¨ï¼
* 容卿¯å°è½¯ä»¶æå
ææ åååå
ï¼ä»¥ç¨äºå¼åã交ä»åé¨ç½²
* 容å¨éåæ¯è½»éçã坿§è¡çç¬ç«è½¯ä»¶å
ï¼å
å«è½¯ä»¶è¿è¡æéçææå
容ï¼ä»£ç ãè¿è¡æ¶ç¯å¢ãç³»ç»å·¥å
·ãç³»ç»åºå设置
* 容å¨å软件å¨ä»»ä½ç¯å¢ä¸é½è½å¤å§ç»å¦ä¸å°è¿è¡ã
* 容å¨èµäºäºè½¯ä»¶ç¬ç«æ§ï¼ä½¿å
¶å
åå¤å¨ç¯å¢å·®å¼çå½±åï¼ä»èæå©äºåå°å¢éé´å¨ç¸ååºç¡è®¾æ½ä¸è¿è¡ä¸å软件æ¶çå²çª
容å¨åèææºå¯¹æ¯ï¼
* ç¸åï¼å®¹å¨åèææºå
·æç¸ä¼¼çèµæºé离ååé
ä¼å¿
* ä¸åï¼
* 容å¨èæåçæ¯æä½ç³»ç»ï¼èææºèæåçæ¯ç¡¬ä»¶ã
* ä¼ ç»èææºå¯ä»¥è¿è¡ä¸åçæä½ç³»ç»ï¼å®¹å¨åªè½è¿è¡åä¸ç±»åæä½ç³»ç»

| ç¹æ§ | å®¹å¨ | èææº |
| ---------- | ------------------ | ---------- |
| å¯å¨ | ç§çº§ | åé |
| 硬çä½¿ç¨ | ä¸è¬ä¸ºMB | ä¸è¬ä¸ºGB |
| æ§è½ | æ¥è¿åç | å¼±äºåç |
| ç³»ç»æ¯æé | åæºæ¯æä¸åä¸ªå®¹å¨ | ä¸è¬å å个 |