一天學會PostgreSQL應用開發與管理-2Linux基本操作
背景
玩轉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
查詢時忽略大小寫
/abcc
?abcc
游標移動
上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
相關文章
- 一天學會PostgreSQL應用開發與管理-8PostgreSQL管理SQL
- 一天學會PostgreSQL應用開發與管理-6事務和鎖SQL
- Postgresql + postgis基本操作SQL
- postgresql 資料庫基本操作SQL資料庫
- 基於PostgreSQL進行Java應用開發SQLJava
- Android應用開發-學生資訊管理系統Android
- postgresql 資料庫基本管理SQL資料庫
- OpenCV成長之路(6):數學形態學基本操作及其應用OpenCV
- 資料庫原理與應用----實驗1:Oracle基本操作資料庫Oracle
- 14天學會安卓開發(第一天)Android架構與環境搭建安卓Android架構
- Git 的基本操作、開發流程、實用技巧總結Git
- 深度強化學習技術開發與應用強化學習
- Redis管理基本操作Redis
- 變更管理與汽車研發應用
- 開發Qt應用程式的基本方法總結QT
- PostgreSQL DBA(28) - Backup&Recovery#1(基本操作)SQL
- 企業員工業務桌面系統的開發應用與管理
- Web應用的元件化開發(一)——基本思路Web元件化
- postgresql 觸發器操作SQL觸發器
- ERP在會計與財務管理中應用(轉)
- Docker學習—概念及基本應用Docker
- 杭州ERP生產管理系統開發的應用與優勢
- 14天學會安卓開發(第十一天)Android圖形技術安卓Android
- Yeoman:Web 應用開發流程與工具Web
- HarmonyOS應用開發學習路線
- 遷移學習核心技術開發與應用研修班遷移學習
- 即學即會 Serverless | 如何解決 Serverless 應用開發部署的難題?Server
- 應用系統開發中學會利用以下概念使用者友好
- [API 開發管理] 分享幾個 eoLinker 實用操作技巧API
- 應用版本控制軟體管理軟體開發
- Lambda表示式基本語法與應用
- 對PDM產品資料管理應用與發展
- iOS開發Runtime的理解與應用iOS
- 深度學習 | 如何開發、部署 Serverless 應用?深度學習Server
- 14天學會安卓開發(第三天)UI事件處理與佈局管理安卓UI事件
- LINUX下磁碟管理的基本流程與相關操作命令Linux
- PgSQL · 核心開發 · 如何管理你的 PostgreSQL 外掛SQL
- dblink的應用與管理