一天学会PostgreSQL应用开发与管理 - 2 Linux基本操作

    xiaoxiao2026-02-02  3

    背景

    玩转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
    最新回复(0)