Linux 常見服務
一、文本編輯器
常見的文本編輯器有,gedit,vi,vim,sublime
vim是vi的增長版,号稱編輯器之神
vim需要安裝
安裝指令:sudo apt -y install vim
1、編輯模式
指令模式 => 編輯模式
按鍵 | 作用 |
---|---|
I | 行首插入 |
i | 在光标位置前插入文本 |
a | 光标後面的位置插入文本 |
A | 目前行的行尾插入文本 |
S | 删除目前行内容,重新輸入 |
s | 删除光标目前位置的字元,開始輸入 |
o | 在目前的下一行開始一個新行開始輸入 |
2、指令模式
編輯模式 =>指令模式 請按esc
按鍵 | 作用 |
---|---|
H | 向左移動一個字元串 |
j | 向下移動一個字元串 |
k | 項上移動一個字元串 |
l(L) | 向右移動一個字元串 |
( | 移動到快首 |
) | 移動到塊尾 |
gg | 移動到第一行 |
G | 移動到尾行 |
ngg | 移動到第n行 n是一個數字 |
yy | 複制光标目前行 |
nyy | 複制n行 |
p | 黏貼 |
np 100p | 黏貼n次 |
dd | 删除一行 |
ndd | 删除n行 |
u | 撤銷上一次的操作 |
shift + 6 | 移動到本行行首 |
shift+ 4 | 移動到本行行尾 |
ctrl + r | 恢複前一個被撤銷的操作 |
. | 重複前一個操作 |
3、底行模式
指令模式 => 低行模式 按 :或者 /?
按鍵 | 作用 |
---|---|
:w | 儲存,不退出 |
:q | 不儲存,退出 |
:q! | 強制退出,不儲存 |
:wq | 儲存并退出 |
:x | 儲存并退出 |
:set nu | 顯示行号 |
:set nonu | 不顯示行号 |
:n | 移動到指定的行 |
/字元串 (回車) | 搜尋指定字元串 n找下一個,N找上一個 |
?字元串 | 從下往上找,n往上找,N往下找 |
:s/要找的字元串/要替換的字元串 | 替換光标目前行的找到的第一個字元串 |
:s/要找的字元串/要替換的字元串/g | 替換光标目前行的找到的所有字元串 |
:%s/要找的字元串/要替換的字元串 | 替換每一行第一個找到字元串 |
:%s/要找的字元串/要替換的字元串/g | 全文替換 |
:n1,n2s/要找的字元串/要替換的字元串/g | n1與n2為數字,在第n1與n2行之間查找指定字元串,并将該字元串替換為要替換的字元串 |
二. 網絡管理
-
ifconfig
配置和顯示Linux核心中網絡接口的網絡參數。
#1 顯示網絡資訊 [[email protected] ~]# ifconfig ens33 Link encap:Ethernet HWaddr 00:1C:42:14:7A:DD inet addr:192.168.3.46 Bcast:192.168.3.255 Mask:255.255.255.0 inet6 addr: fe80::21c:42ff:fe14:7add/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:351142 errors:0 dropped:0 overruns:0 frame:0 TX packets:748 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:81649700 (77.8 MiB) TX bytes:94340 (92.1 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) 重要資料說明: inet addr: ipv4位址 inet6: ipv6位址 HWaddr: mac位址 Mask: 子網路遮罩 UP:代表網卡開啟 RUNNING:代表網卡的網線被接上 MULTICAST:支援多點傳播 MTU:最大傳輸單元 (1500位元組)。 # 2. ifconfig ens33 檢視指定網卡資訊 # 3.啟動關閉網卡 ifconfig ens33 up #啟動網卡 ifconfig ens33 down #關閉網卡 # 4 重新開機網絡 /etc/init.d/networking restart
-
ping
ping指令用來測試主機之間網絡的連通性
用法: ping [參數] [主機名或IP位址] 參數: -c n 執行指定次數 n的ping指令 -b 測試與網關IP的連通性 #1.檢視于百度的聯通型 [[email protected] ~]# ping -c 3 www.baidu.com #2.檢視于網關的連通性 [[email protected] ~]# ping -b www.baidu.com
- netstat 檢視網絡連接配接狀況
netstat -an -n 顯示端口 -p 顯示程序 -t tcp -u udp -a 顯示所有 #1.sudo netstat -nt 顯示所有已建立的TCP連接配接 Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 10.0.112.235:22 10.0.112.252:57530 ESTABLISHED tcp 0 64 192.168.3.46:22 192.168.3.50:58677 ESTABLISHED #2. sudo netstat -nu 顯示已建立的UDP連接配接 #3. sudo netstat -ntpa 顯示TCP端口号的使用情況
三. 程序管理
-
ps
Linux中的ps指令是Process Status的縮寫。ps指令用于報告目前系統的程序狀态。可以搭配kill指令随時中斷、删除不必要的程式。
用法: ps [選項參數] [使用者名](可選) 參數: -a -e 顯示所有程序 -u 顯示指定使用者的程序的詳細資訊 -x :通常與 a 這個參數一起使用,可列出較完整資訊。 -r:正在運作的程序 #1.ps -e|more -20 顯示所有程序,每屏20個 #2.ps -u root|more -10 顯示指定使用者的程序資訊 #3. ps -ef|grep kworker 過濾指定資訊 #4. ps -aux| grep ssh 列出目前所有的正在記憶體當中的程式 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 19232 1496 ? Ss 00:23 0:00 /sbin/init root 2 0.0 0.0 0 0 ? S 00:23 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 00:23 0:00 [migration/0] PID 程序号 %CPU cpu的占用率 %MEM 記憶體的占用率 VSZ 占用虛拟記憶體的量 RSS 駐留記憶體的量 TTY 程序的控制終端,?表示不是從終端進入的。 STAT 程序狀态(R就緒 S可中斷的休眠态 T暫停執行) START 程序開始時間 TIME已經執行的時間 #殺死程序 kill [參數] 程序号 #1. kill 2 殺死指定程序号的程序 #2. kill -9 2 強制殺死指定程序号的程序 #殺死指定程序名的程序 killall [-9] 程序名稱
-
top
top指令是Linux下常用的性能分析工具,能夠實時顯示系統中各個程序的資源占用狀況,類似于Windows的任務管理器。
用法: top 使用q退出 top - 03:32:26 up 3:08, 2 users, load average: 0.03, 0.04, 0.05 Tasks: 100 total, 1 running, 99 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1016160k total, 163660k used, 852500k free, 9412k buffers Swap: 2064380k total, 0k used, 2064380k free, 51072k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 19232 1496 1224 S 0.0 0.1 0:00.95 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.03 kthreadd 3 root RT 0 0 0 0 S 0.0 0.0 0:00.05 migration/0 資料說明: 03:32:26 目前時間 up 3:08 系統運作時間,格式為時:分 2 user 目前登入使用者數 load average: 0.03, 0.04 0.05 系統負載,即任務隊列的平均長度。三個數值分别為 1分鐘、5分鐘、15分鐘前到現在的平均值。 第二、三行為程序和CPU的資訊。當有多個CPU時,這些内容可能會超過兩行。内容如下: total 程序總數 running 正在運作的程序數 sleeping 睡眠的程序數 stopped 停止的程序數 zombie 僵屍程序數 Cpu(s): 最後兩行為記憶體資訊。内容如下: Mem: 191272k total 實體記憶體總量 173656k used 使用的實體記憶體總量 17616k free 空閑記憶體總量 22052k buffers 用作核心緩存的記憶體量 Swap: 192772k total 交換區總量 0k used 使用的交換區總量 192772k free 空閑交換區總量 程序資訊區統計資訊區域的下方顯示了各個程序的詳細資訊。首先來認識一下各列的含義。 序号 列名 含義 a PID 程序id b PPID 父程序id c RUSER Real user name d UID 程序所有者的使用者id e USER 程序所有者的使用者名 f GROUP 程序所有者的組名 g TTY 啟動程序的終端名。不是從終端啟動的程序則顯示為 ? h PR 優先級
四. 磁盤管理
- 硬碟類型: HDD 機械硬碟、SDD 固态硬碟 HHD混合硬碟
- 檔案系統
- windows: fat16 fat32 exFat ntfs
- linux: ext2 ext3 ext4
- 檢視磁盤使用情況 df
df -h /dev/sda1 #檢視第一個硬碟的使用情況 第一塊硬碟是 : sda 第二塊硬碟是 : sdb 第三塊硬碟是 : sdc df -h 以使用者最佳體驗檢視 df -k 以k為機關 df -m 以兆為機關
- du 檢視檔案或目錄的空間使用情況
- -a 顯示目錄大小,包括其子目錄和檔案大小
- -s 顯示目錄大小,不顯示其子目錄和檔案大小
- -c 顯示目錄及其檔案大小,并統計總的大小
[email protected]:~/tmp$ du -h ~/tmp 8.0K /home/user1/tmp 顯示家目錄大小 du -s ~ 顯示檔案大小 du -h 1.txt
- 磁盤分區 fdisk
fdisk -l #檢視磁盤分區情況 fdisk [option] 裝置 -m 幫助 -n 建立一個新分區 -d 删除一個分區 -w 儲存 -q 不儲存 1 建立一個新的分
e extended 擴充分區
p primary partition (1-4) 主分區
必須先建立一個主分區,n -> p -> -> 自己定義大小 ->w(儲存)
2 格式化
mke2fs -t ext4 /dev/sdb1 #-t 檔案系統類型 mkfs
3 挂載 mount
所謂挂載就是把硬碟和目錄綁定,通過指定的目錄進入硬碟
#臨時挂載
mount -t ext4 /dev/sdb1 /csl/diskb #将sdb1挂載到/csl/diskb目錄
永久挂載:
vim /etc/fstab
/dev/sdb1 /csl/diskb ext4 defaults 0 0
要挂在的磁盤 挂載點 檔案類型 挂載參數 是否需要備份 是否開機檢查磁盤(0不檢查,1檢查)
立即生效 mount -a
取消挂載
umount /csl/diskb
五. 其它
-
uname
uname指令用于顯示系統資訊
#顯示linux核心版本号 uname -r #顯示系統所有資訊 uname -a #顯示作業系統版本 uname -v
-
hostname
顯示或設定主機名稱
#顯示主機名 $ hostname #臨時設定主機名 $ sudo hostname hello #永久設定主機名 $ vim /etc/hostname #ubuntu的主機名在/etc/hostname檔案中,其他liux可能會在/etc/sysconfig/network中
-
who
顯示目前登入使用者
who -a 顯示所有資訊 $ who -a 系統引導 2018-03-30 14:17 登入 tty1 2018-03-30 14:17 952 id=tty1 運作級别 5 2018-03-30 14:17 python + tty7 2018-03-30 14:17 02:34 1431 (:0)
-
w
用來檢視登入者的資訊及他們的行為
w 指令:執行這項指令可得知目前登入系統的使用者有那些人,以及他們正在執行的程式。單獨執行w 指令會顯示所有的使用者,您也可指定使用者名稱,僅顯示某位使用者的相關資訊。 文法:w [-fhlsuV][使用者名稱] linux w 指令參數: -f 開啟或關閉顯示使用者從何處登入系統。 -h 不顯示各欄位的标題資訊列。 -l 使用詳細格式清單,此為預設值。 -s 使用簡潔格式清單,不顯示使用者登入時間,終端機階段作業和程式所耗費的CPU時間。 -u 忽略執行程式的名稱,以及該程式耗費CPU時間的資訊。 #1. 常見用法,直接使用 [[email protected] csl]# w 03:44:07 up 3:20, 2 users, load average: 0.07, 0.08, 0.06 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 - 01:41 1:00m 0.13s 0.13s -bash root pts/1 192.168.3.50 02:34 0.00s 0.18s 0.00s w
-
last
顯示使用者最近登入資訊
#顯示使用者最近登入資訊,隻顯示10行 $ last -10 python tty7 :0 Fri Mar 30 14:17 gone - no logout reboot system boot 4.13.0-37-generi Fri Mar 30 14:17 still running python tty7 :0 Thu Mar 29 20:59 - down (17:17) reboot system boot 4.13.0-37-generi Thu Mar 29 20:49 - 14:17 (17:28) python pts/18 10.0.103.229 Thu Mar 29 14:53 - 18:00 (03:07) python pts/17 10.0.136.238 Thu Mar 29 09:48 - 17:05 (07:17) python pts/17 10.0.136.238 Thu Mar 29 09:36 - 09:48 (00:11) python tty7 :0 Thu Mar 29 09:36 - down (08:24) reboot system boot 4.13.0-37-generi Thu Mar 29 09:36 - 18:00 (08:24) python pts/18 10.0.136.238 Thu Mar 29 09:17 - 09:35 (00:17)
- 記憶體檢視
# 檢視記憶體 [email protected]:/home/python# free -h total used free shared buff/cache available Mem: 3.3G 1.5G 1.5G 10M 388M 1.6G Swap: 1.0G 0B 1.0G # 釋放記憶體 sudo sh -c 'echo 1 > /proc/sys/vm/drop_caches' sudo sh -c 'echo 2 > /proc/sys/vm/drop_caches' sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
六. linux的啟動
1 開機BIOS加載
2 讀取MBR引導記錄
3 加載linux核心
4 加載init程序,實作系統初始化,init程序是其他所有程序的父程序
[外鍊圖檔轉存失敗(img-CEmv6JBF-1566629138618)(runlevel.png)]
5 執行/etc/init/rc-sysinit.conf,設定啟動級别
0-關機模式,
1-單使用者模式,單使用者隻有系統管理者可以登入。
2-多使用者模式,但是不支援檔案共享,例如不支援NFS服務.這種模式不常用。
3-完全的多使用者模式,支援NFS服務.最常用的使用者模式,預設登入到系統的字元界面。
4-保留模式。
5-完全多使用者模式,預設登入到X-window系統,也就是登入到linux圖形界面。
6-重新開機模式,也就是執行關閉所有運作的程序,然後重新啟動系統
6 啟動核心
7 執行不同運作級别腳本程式,視級别的不同執行rc0~rc6下的腳本來完成相應的初始化和啟動工作
8 執行/etc/init.d/rc.local ,可以把要自動加載的程式寫到這個腳本裡
9 使用者登入
顯示目前運作模式的指令:
runlevel
who -r
七. 計劃任務
7.1 周期性定時任務
在指定的時間做指定的事情,周期性的事情。需要使用者有相應的權限,否則無法操作
vim /etc/crontab 打開定時任務
目前登入使用者可以使用:
crontab -l 檢視定時任務 /etc/crontab 裡邊的除外
crontab -e 編輯定時任務
分 小時 日 月 周 操作 解釋
0-59 0-23 1-31 1-12 0-6
0 0 * * * mysqldum 每天0時備份資料庫
0 2 * * 0 sync 每個星期天2點中做檔案同步
0 0 15 * * /usr/local/jsgz.py 每個月的15号0時計算工資
0 */1 * * * sh 每個1個小時執行腳本
0 8,12,18 * * * daka.py 每天的8點、12點、18點打卡
0 8-22 * * * study.py 每天8-22在教室學習
crontab -r 清空所有定時任務 隻能清除crontab -e産生的定時任務
清除指定定時任務 crontab -e 删除指定行
service cron start/restart/stop #啟動、重新開機、停止定時任務
- 實時檢視日志
tail -f cat 檔案名
watch -d -n 秒數 cat /8.txt #帶高亮
7.2 at一次性定時任務
at 指令是用來執行一次性任務,比如要在二十分鐘後重新開機,要在 2 分鐘後啟動一個可執行程式,或者在一天後執行一個腳本。适合應對突發性和臨時性的任務。
#1 安裝at服務
sudo apt-get install at
#檢視服務是否運作
service atd status
#重新開機服務
service atd restart |start | stop
#at指令說明:
[[email protected] /]# at [-ldc] 用于檢視、取消、顯示任務的詳情
-l:列出目前使用者的at任務清單,也可使用 atq
-d 任務編号:取消一個at 任務,後面跟 at 任務編号,也可使用atrm 任務編号代替
-c 任務編号:顯示該任務的實際記憶體,如:at -c 1 ,顯示 1 号任務的詳情
[[email protected] /]# at 時間 設定定時任務
at 時間有多種指定方式:
HH:MM 如: at 02:30
HH:MM YYYY-MM-DD 如:at 8:00 2020-01-01
HH:MM[am | pm] [month] [date] 如:at 8:00 Oct 1 # 在十月一号的八點
HHlMM[am | pm] + number [minutes | hours | days | weeks] 如:at 8:00 + 1days
最常用的的一個時間:now + 時間 比如在十分鐘後:at now + 10 minutes,在一天後:at now + 1 days
#使用示例:
[email protected]:~$ at now + 3 minutes
warning: commands will be executed using /bin/sh
at> ls -l
at> <EOT> #按ctl+d自動産生<EOT>
job 4 at Tue Jun 12 22:56:00 2018
#檢視任務清單
[email protected]:~$ at -l
4 Tue Jun 12 22:56:00 2018 a python
八. 軟體安裝
8.1 壓縮與解壓
windows常見的壓縮包:rar zip 7zip iso
linux常見的壓縮包: zip gz bz2 tar
- gz壓縮和解壓
如果沒有gzip,用apt安裝 # apt-get install gzip gzip 檔案名1 檔案名2 #多檔案壓縮,自動生成對應壓縮包 檔案名.gz 不能壓縮目錄 删除原件 gzip -d 壓縮包1 壓縮包2 #支援批量解壓,删除原件
- bz2壓縮和解壓
壓縮 bzip2 檔案名1 檔案名2 #支援批量壓縮 不支援壓縮目錄 自動升成 檔案名.bz2 解壓 bzip2 -d 包名1 包名2 #自動删掉原件
- tar壓縮和解壓(*)
tar [option] -c 打包 -x 解包 -v 可視化 -f指定檔案名 -t 檢視包裡的東西 -z 用gzip對包進行壓縮 -j 用把bzip2對包進行壓縮 tar -cvf 包名 檔案名1 檔案名2 目錄1 #不删除原件,可以打包目錄 tar -xvf 包名 #不删除原件 打包并壓縮 tar -zcvf 包名 檔案名1 檔案名2 目錄1 tar -jcvf 包名 檔案名1 檔案名2 目錄1 解壓 tar -zxvf 包名 gz xz tar -jxvf 包名
- zip壓縮和解壓
apt-get -y install zip unzip zip 包名 檔案名或目錄 unzip 包名
8.2 軟體的安裝
- apt
解決deb複雜的依賴關系
檢視軟體包資訊 sudo apt-cache showsrc 包名
獲得源碼 sudo apt-get source 包名
安裝軟體 sudo apt-get install 包名 -y
删除軟體 sudo apt-get remove 包名
擷取新的軟體包清單 sudo apt-get update
更新有可用更新的軟體包 sudo apt-get upgrade
- 手動更新軟體源
# 1.備份檔案
sudo cp /etc/apt/sources.list /etc/apt/sources.list.old
# 2.編輯檔案
sudo gedit /etc/apt/sources.list
#删除檔案内容,然後把下面内容拷貝進去
# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
# 3.儲存退出後,執行指令
sudo apt-get update
sudo apt-get upgrade
安裝nginx
#1 更新軟體清單
sudo apt-get update
#2 安裝
sudo apt-get install nginx
#3 啟動服務
sudo /etc/init.d/ngin start # start | restart | stop
或
service nginx start | restart | stop
# 配置虛拟站點
cd /etc/nginx/sites-available
#4.複制虛拟站點配置模闆,生成自己虛拟站點的配置檔案
sudo cp default www.blog.com.conf
#5 編輯模闆
#---------------------以下為配置内容-------------------
server {
listen 80; #監聽端口
#站點的根目錄
root /var/www/html/www.blog.com;
# Add index.php to the list if you are using PHP
#網站預設首頁打開順序
index index.html index.htm;
#站點名稱,可以有多個名稱,中間用空格隔開
server_name www.blog.com blog.com;
}
#------------------到此結束------------------------------
#這個模闆比較簡單,如果有複雜的要求,請以此為基礎進行改進
#6 儲存退出
:wq
#7 切換到sites-enabled目錄下,建立軟連接配接
cd ../sites-enabled
sudo ln -s /etc/nginx/sites-available/www.blog.com.con www.blog.com.conf
#8 重新開機nginx服務
sudo service nginx restart (start/stop)
或者
sudo /etc/init.d/nginx restart
#8 切換到站點根目錄(根據你自己的設定進行),我假定站點根目錄是/var/www
cd /var/www
sudo chmod -R 755 blog
#編輯index.html
<html>
<head>
<meta charset='utf-8'>
<title>瘋狂程式員的部落格</title>
</head>
<body>
<h1>瘋狂的程式員</h1>
</body>
</html>
#儲存退出
:wq
#9 切換到windows系統下,編輯C:\Windows\System32\drivers\etc\hosts檔案,在末尾增加:
#ip為你虛拟機的ip位址
192.168.48.3 www.blog.com
#10 在windows系統下浏覽器裡輸入 : www.blog.com
看看是否是你的頁面
2.dpkg安裝
dpkg是"Debian Package"的簡寫。
指令 | 說明 | 示例 |
---|---|---|
dpkg -l 包名 | 檢視軟體包 | dpkg -l | grep zip |
dpkg -i 封包件名(.deb) | 安裝軟體包 | dpkg -i sogoupinyin_2.2.0.0108_amd64.deb |
dpkg -r 包名 | 解除安裝軟體包但保留配置資訊 | |
dpkg -P 包名 | 解除安裝軟體包聯通配置資訊一并解除安裝 |
鏡像源:
deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiversed
望您:
“情深不壽,強極則辱,謙謙君子,溫潤如玉”。