背景
玩轉PostgreSQL前,首先要了解的最最基本的Linux操作。
本章大綱
1. 如何通路指令行
2. 使用指令行下的工具
非編輯模式
進入編輯模式
3. 正規表達式、管道和I/O 重定向
4. 管理使用者賬戶
5. 檔案通路控制
6. 管理程序
1,如何通路指令行
1.1 本地指令行的通路
在圖形界面中,通路指令行的方法:打開Terminal,Console。
或者:Ctrl+Alt+F1 ~ F6
1.2 使用SSH 通路指令行
同上
2,使用指令行下的工具
2.1 使用硬連結
硬連結,指在同一個檔案系統中,對inode的引用,隻要檔案上存在至少1個硬連結,就可以找到對應的inode。
[digoal@digoal01 ~]$ stat a
File: `a'
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 656374 Links: 1 -- 硬連結數量
Access: (0664/-rw-rw-r--) Uid: ( 500/ digoal) Gid: ( 500/ digoal)
Access: 2017-04-11 13:18:14.292848716 +0800
Modify: 2017-04-11 13:18:14.292848716 +0800
Change: 2017-04-11 13:18:14.292848716 +0800
建立硬連結
[digoal@digoal01 ~]$ stat a
File: `a'
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 656374 Links: 2
Access: (0664/-rw-rw-r--) Uid: ( 500/ digoal) Gid: ( 500/ digoal)
Access: 2017-04-11 13:18:14.292848716 +0800
Modify: 2017-04-11 13:18:14.292848716 +0800
Change: 2017-04-11 13:18:34.631855044 +0800
[digoal@digoal01 ~]$ stat b
File: `b'
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 656374 Links: 2
Access: (0664/-rw-rw-r--) Uid: ( 500/ digoal) Gid: ( 500/ digoal)
Access: 2017-04-11 13:18:14.292848716 +0800
Modify: 2017-04-11 13:18:14.292848716 +0800
Change: 2017-04-11 13:18:34.631855044 +0800
删除一個硬連結,還能通過其他硬連結找到對應的inode。
rm: remove regular file `a'? y
[digoal@digoal01 ~]$ cat b
abc
2.2 歸檔和解壓
常用的歸檔指令tar
歸檔-c (常用壓縮庫-j bz2, -z gzip)
b
解壓-x
b
[digoal@digoal01 ~]$ cat b
abc
2.3 VIM 簡介
Linux下的指令行文本編輯器。
2.4 基本的VIM 工作流程
使用vi打開檔案
進入vi幫助
退出vi幫助
顯示行号
向後find
轉義符号為\
向前find
轉義符号為\
find下一個
向上定位下一個目标詞 N
查找時忽略大小寫
?abc\c
光标移動
左h右l
翻頁
Ctrl+b 向上翻頁
行尾
行頭
檔案開始
檔案結尾
按詞移動光标
向上移動 b
删除行
向下删除兩行(包括目前行) d2d
删除字
删除到詞尾(直到下一個詞的第一個字)
删除2個詞 d2w
粘貼剛剛删除的行、字元等
向上粘貼 P
粘貼
替換
替換每行所有的命中詞 :%s/原詞/替換為目标詞/g
反悔
前滾 Ctrl+R
插入
追加
向前插入行
向後插入行
換行
退出編輯模式
儲存
儲存并退出
:x!
3,正規表達式、管道和I/O 重定向
3.1 基本的正規表達式
以grep為例,使用正則查找
查找以a開頭的行
abc
查找以b結束的行
查找包含數字的行
查找包含2個連續數字的行
3.2 使用grep
3.3 管道和重定向
管道符
使用管道,将一個指令的标準輸出,作為另一個指令的标準輸入
abc
重定向指令的标準輸出
$cat a >/dev/null
重定向到某個檔案,并覆寫重定向目标
$cat a >./b
追加方式重定向目标
$cat a >>./b
重定向指令的标準錯誤
$cat err
cat: 1: No such file or directory
4,管理使用者賬戶
4.1 什麼是使用者
Linux是多使用者系統,多使用者同時也便于權限的管理。
查找已有的使用者
root:x:0:0:root:/root:/bin/bash
......
4.2 管理本地使用者
新增、删除使用者
userdel 使用者名
4.3 管理密碼
設定使用者密碼
Changing password for user digoal.
New password:
Retype new password:
5,檔案通路控制
5.1 管理使用者組
建立、删除組
[root@digoal01 ~]# groupdel 組名
5.2 管理檔案系統通路控制清單
Linux中檔案、目錄的權限分為使用者權限、組權限、其他使用者權限。
例如
total 18744
-rw-------. 1 root root 1048 Mar 8 2016 anaconda-ks.cfg
-rw-r--r-- 1 root root 9579 Mar 26 23:00 install.log
-rw-r--r--. 1 root root 3384 Mar 8 2016 install.log.syslog
drwxrwxrwx. 6 1107 1107 4096 Sep 27 2016 postgresql-9.6.0
第1個字元:表示這個檔案是目錄、普通檔案。
2-4字元:owner的權限
5-7字元:group的權限
8-10字元:other的權限
r 讀
w 寫
x 普通檔案表示可以運作, 目錄表示可以進入目錄
修改檔案、目錄的user:group
ls -l postgresql-9.6.0
drwxrwxrwx. 6 digoal root 4096 Sep 27 2016 postgresql-9.6.0
修改檔案、目錄的權限
w 2
x 1
[root@digoal01 ~]# chmod 700 install.log
[root@digoal01 ~]# ls -l install.log
-rwx------ 1 root root 9579 Mar 26 23:00 install.log
6,管理程序
6.1 監控程序
top
列印系統程序
ps -efwL
統計每個程序的開銷
pidstat -d -r -u -w -l -h -p ALL 5 1
列印程序stack
pstack -p pid
列印程序系統調用
strace -p pid
6.2 結束和管理程序
結束程序
強制結束程序(使用者程序無法捕獲-9信号,可能崩潰)
6.3 管理周期程序
任務排程程序的管理
檢視目前使用者的目前排程任務
配置目前使用者的排程任務(指令一定要有user:x權限,否則不會被執行)
# * 表示所有,支援-号範圍,支援,号枚舉
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
6.4 調整程序
程序優先級,Linux在配置設定計算資源時,優先配置設定給nice值低的程序。
nice等級的範圍從-20-19,其中-20最高,19最低,隻有系統管理者可以設定負數的等級。
啟動時調整程序的優先級
nice -n -5 指令 &
調整已存在程序的優先級
#PID為5200的程序nice設為-5
檢視程序優先級
NI 字段表示
調整程序的CPU親和(綁定CPU)
将指令的CPU綁定到1,2,3号核
6.5 系統狀态監控
iostat
cpu,disk,net,system資源使用監控
dstat
每個CPU核的使用監控
mpstat