暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

快速入门PostgreSQL应用开发与管理 - 2 Linux基本操作

digoal 2017-04-11
282
TAG 31

作者

digoal

日期

2017-04-11

标签

PostgreSQL , 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
```

PostgreSQL 许愿链接

您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.

9.9元购买3个月阿里云RDS PostgreSQL实例

PostgreSQL 解决方案集合

德哥 / digoal's github - 公益是一辈子的事.

digoal's wechat

文章转载自digoal,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论