热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

digoal德哥专栏快速入门PostgreSQL应用开发与管理-
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


推荐阅读
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • MySQL插入数据的四种方式及安全性分析
    本文介绍了MySQL插入数据的四种方式:插入完整的行、插入行的一部分、插入多行和插入查询结果,并对其安全性进行了分析。在插入行时,应注意字段的定义和赋值,以提高安全性。同时指出了使用insert语句的不安全性,应尽量避免使用。建议在表中定义相关字段,并根据定义的字段赋予相应的值,以增加插入操作的安全性。 ... [详细]
  • Explain如何助力SQL语句的优化及其分析方法
    本文介绍了Explain如何助力SQL语句的优化以及分析方法。Explain是一个数据库SQL语句的模拟器,通过对SQL语句的模拟返回一个性能分析表,从而帮助工程师了解程序运行缓慢的原因。文章还介绍了Explain运行方法以及如何分析Explain表格中各个字段的含义。MySQL 5.5开始支持Explain功能,但仅限于select语句,而MySQL 5.7逐渐支持对update、delete和insert语句的模拟和分析。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • 手把手教你使用GraphPad Prism和Excel绘制回归分析结果的森林图
    本文介绍了使用GraphPad Prism和Excel绘制回归分析结果的森林图的方法。通过展示森林图,可以更加直观地将回归分析结果可视化。GraphPad Prism是一款专门为医学专业人士设计的绘图软件,同时也兼顾统计分析的功能,操作便捷,可以帮助科研人员轻松绘制出高质量的专业图形。文章以一篇发表在JACC杂志上的研究为例,利用其中的多因素回归分析结果来绘制森林图。通过本文的指导,读者可以学会如何使用GraphPad Prism和Excel绘制回归分析结果的森林图。 ... [详细]
  • MySQL5.6.40在CentOS764下安装过程 ... [详细]
author-avatar
Boss-201411
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有