閱讀74 返回首頁    go 阿裏雲 go 技術社區[雲棲]


一天學會PostgreSQL應用開發與管理 - 2 Linux基本操作

背景

玩轉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 ~]$ echo "abc" > ./a  
[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 ~]$ ln -L ./a ./b  
[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。

[digoal@digoal01 ~]$ rm a  
rm: remove regular file `a'? y  
[digoal@digoal01 ~]$ cat b  
abc  

2.2 歸檔和解壓

常用的歸檔命令tar

歸檔-c (常用壓縮庫-j bz2, -z gzip)

[digoal@digoal01 ~]$ tar -jcvf test.tar.bz2 b  
b  

解壓-x

[digoal@digoal01 ~]$ tar -jxvf test.tar.bz2   
b  
[digoal@digoal01 ~]$ cat b  
abc  

2.3 VIM 簡介

Linux下的命令行文本編輯器。

2.4 基本的VIM 工作流程

使用vi打開文件

vi 文件名  

非編輯模式

進入vi幫助

:help  

退出vi幫助

:q  

顯示行號

:set nu  

向後find

/需要查找的詞  
  
轉義符號為\  

向前find

?需要查找的詞  
  
轉義符號為\  

find下一個

向下定位下一個目標詞 n  
  
向上定位下一個目標詞 N  

查找時忽略大小寫

/abc\c  
?abc\c  

光標移動

上i下k  
左h右l  

翻頁

Ctrl+f 向下翻頁  
  
Ctrl+b 向上翻頁  

行尾

Shift+$  

行頭

Shift+|  

文件開始

按兩次小寫g  

文件結尾

大寫G  

按詞移動光標

向下移動 w  
  
向上移動 b  

刪除行

刪除當前行  dd  
向下刪除兩行(包括當前行)  d2d  

刪除字

x  

刪除到詞尾(直到下一個詞的第一個字)

dw  
  
刪除2個詞   d2w  

粘貼剛剛刪除的行、字符等

向下粘貼 p
 
向上粘貼 P

粘貼

Shift+Insert

替換

隻替換每行的第一個命中詞    :%s/原詞/替換為目標詞/
 
替換每行所有的命中詞        :%s/原詞/替換為目標詞/g

反悔

回退  u
 
前滾  Ctrl+R

進入編輯模式

插入

i  

追加

a  

向前插入行

O  

向後插入行

o  

換行

Enter  

退出編輯模式

ESC  

保存

:w

保存並退出

:wq!

:x!

3, 正則表達式、管道和I/O 重定向

3.1 基本的正則表達式

以grep為例,使用正則查找

查找以a開頭的行

$grep -E "^a" file  
abc  

查找以b結束的行

$grep -E "b$" file  

查找包含數字的行

grep -E "[0-9]" a  

查找包含2個連續數字的行

$grep -E "[0-9]{2}" a  

3.2 使用grep

同上

3.3 管道和重定向

管道符

|  

使用管道,將一個命令的標準輸出,作為另一個命令的標準輸入

$echo "abc" | grep "a"  
abc  

重定向命令的標準輸出

重定向到空設備,並覆蓋重定向目標  
  
$cat a >/dev/null  
  
重定向到某個文件,並覆蓋重定向目標  
  
$cat a >./b  
  
追加方式重定向目標  
  
$cat a >>./b  

重定向命令的標準錯誤

$cat 1  > /dev/null 2>./err  
  
$cat err  
cat: 1: No such file or directory  

4, 管理用戶賬戶

4.1 什麼是用戶

Linux是多用戶係統,多用戶同時也便於權限的管理。

查找已有的用戶

$cat /etc/passwd  
root:x:0:0:root:/root:/bin/bash  
......  

4.2 管理本地用戶

新增、刪除用戶

useradd 用戶名  
userdel 用戶名  

4.3 管理密碼

設置用戶密碼

passwd digoal  
Changing password for user digoal.  
New password:   
Retype new password:   

5, 文件訪問控製

5.1 管理用戶組

創建、刪除組

[root@digoal01 ~]# groupadd 組名  
[root@digoal01 ~]# groupdel 組名  

5.2 管理文件係統訪問控製列表

Linux中文件、目錄的權限分為用戶權限、組權限、其他用戶權限。

例如

[root@digoal01 ~]# ls -l  
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

chown digoal:root postgresql-9.6.0  
  
ls -l postgresql-9.6.0  
drwxrwxrwx. 6 digoal root     4096 Sep 27  2016 postgresql-9.6.0  

修改文件、目錄的權限

r 4  
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(f進入field選擇)  
top  
  
打印係統進程  
ps -efwL  
  
統計每個進程的開銷  
pidstat -d -r -u -w -l -h -p ALL 5 1  
  
打印進程stack  
pstack -p pid  
  
打印進程係統調用  
strace -p pid  

6.2 結束和管理進程

結束進程

kill pid  

強製結束進程(用戶進程無法捕獲-9信號,可能崩潰)

kill -9 pid  

6.3 管理周期進程

任務調度進程的管理

查看當前用戶的當前調度任務

crontab -l  

配置當前用戶的調度任務(命令一定要有user:x權限,否則不會被執行)

crontab -e  
  
# * 表示所有,支持-號範圍,支持,號枚舉  
# 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最低,隻有係統管理者可以設置負數的等級。

啟動時調整進程的優先級

啟動時設置為-5  
  
nice -n -5 命令 &  

調整已存在進程的優先級

renice -5 -p 5200  
  
#PID為5200的進程nice設為-5  

查看進程優先級

top -p pid  
NI 字段表示  

調整進程的CPU親和(綁定CPU)

numactl --physcpubind=1,2,3 命令  
  
將命令的CPU綁定到1,2,3號核  

6.5 係統狀態監控

IO監控  
iostat   
  
cpu,disk,net,system資源使用監控  
dstat   
  
每個CPU核的使用監控  
mpstat   

最後更新:2017-04-12 23:25:18

  上一篇:go 一天學會PostgreSQL應用開發與管理 - 3 訪問數據
  下一篇:go 一天學會PostgreSQL應用開發與管理 - 1 如何搭建一套學習、開發PostgreSQL的環境