编辑器 - vim

  1. 启动vim。可以通过vivim命令来启动vim,启动时可以指定文件名来打开一个文件,如果没有指定文件名,也可以在保存的时候指定文件名。

    (base) liuzuoping@liuzuoping~Lenove-G480:~$vim guess.py
    
  2. 命令模式、编辑模式和末行模式:启动vim进入的是命令模式(也称为Normal模式),在命令模式下输入英文字母i会进入编辑模式(Insert模式),屏幕下方出现-- INSERT --提示;在编辑模式下按下Esc会回到命令模式,此时如果输入英文:会进入末行模式,在末行模式下输入q!可以在不保存当前工作的情况下强行退出vim;在命令模式下输入v会进入可视模式(Visual模式),可以用光标选择一个区域再完成对应的操作。

  3. 保存和退出vim:在命令模式下输入: 进入末行模式,输入wq可以实现保存退出;如果想放弃编辑的内容输入q!强行退出,这一点刚才已经提到过了;在命令模式下也可以直接输入ZZ实现保存退出。如果只想保存文件不退出,那么可以在末行模式下输入w;可以在w后面输入空格再指定要保存的文件名。

  4. 光标操作。

    • 在命令模式下可以通过hjkl来控制光标向左、下、上、右的方向移动,可以在字母前输入数字来表示移动的距离,例如:10h表示向左移动10个字符。
    • 在命令模式下可以通过Ctrl+yCtrl+e来实现向上、向下滚动一行文本的操作,可以通过Ctrl+fCtrl+b来实现向前和向后翻页的操作。
    • 在命令模式下可以通过输入英文字母G将光标移到文件的末尾,可以通过gg将光标移到文件的开始,也可以通过在G前输入数字来将光标移动到指定的行。
  5. 文本操作。

    • 删除:在命令模式下可以用dd来删除整行;可以在dd前加数字来指定删除的行数;可以用d$来实现删除从光标处删到行尾的操作,也可以通过d0来实现从光标处删到行首的操作;如果想删除一个单词,可以使用dw;如果要删除全文,可以在输入:%d(其中:用来从命令模式进入末行模式)。
    • 复制和粘贴:在命令模式下可以用yy来复制整行;可以在yy前加数字来指定复制的行数;可以通过p将复制的内容粘贴到光标所在的地方。
    • 撤销和恢复:在命令模式下输入u可以撤销之前的操作;通过Ctrl+r可以恢复被撤销的操作。
    • 对内容进行排序:在命令模式下输入%!sort
  6. 查找和替换。

    • 查找操作需要输入/进入末行模式并提供正则表达式来匹配与之对应的内容,例如:/doc.*\.,输入n来向前搜索,也可以输入N来向后搜索。
    • 替换操作需要输入:进入末行模式并指定搜索的范围、正则表达式以及替换后的内容和匹配选项,例如::1,$s/doc.*/hello/gice,其中:
      • g - global:全局匹配。
      • i - ignore case:忽略大小写匹配。
      • c - confirm:替换时需要确认。
      • e - error:忽略错误。
  7. 参数设定:在输入:进入末行模式后可以对vim进行设定。

    • 设置Tab键的空格数:set ts=4

    • 设置显示/不显示行号:set nu / set nonu

    • 设置启用/关闭高亮语法:syntax on / syntax off

    • 设置显示标尺(光标所在的行和列): set ruler

    • 设置启用/关闭搜索结果高亮:set hls / set nohls

      说明:如果希望上面的这些设定在每次启动vim时都能生效,需要将这些设定写到用户主目录下的.vimrc文件中。

  8. 高级技巧

    • 比较多个文件。

      (base) liuzuoping@liuzuoping~Lenove-G480:~$ vim -d foo.txt bar.txt
      

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7HaBEy4l-1578474464836)(./res/vim-diff.png)]

    • 打开多个文件。

    (base) liuzuoping@liuzuopingLenove-G480:$ vim foo.txt bar.txt hello.txt

    
    启动vim后只有一个窗口显示的是foo.txt,可以在末行模式中输入`ls`查看到打开的三个文件,也可以在末行模式中输入`b <num>`来显示另一个文件,例如可以用`:b 2`将bar.txt显示出来,可以用`:b 3`将hello.txt显示出来。- 拆分和切换窗口。可以在末行模式中输入`sp`或`vs`来实现对窗口的水平或垂直拆分,这样我们就可以同时打开多个编辑窗口,通过按两次`Ctrl+w`就可以实现编辑窗口的切换,在一个窗口中执行退出操作只会关闭对应的窗口,其他的窗口继续保留。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b0lIFl9J-1578474464836)(./res/vim-multi-window.png)]- 映射快捷键:在vim下可以将一些常用操作映射为快捷键来提升工作效率。- 例子1:在命令模式下输入`F4`执行从第一行开始删除10000行代码的操作。`:map <F4> gg10000dd`。例子2:在编辑模式下输入`__main`直接补全为`if __name__ == '__main__':`。`:inoremap __main if __name__ == '__main__':`> 说明:上面例子2的`inoremap`中的`i`表示映射的键在编辑模式使用, `nore`表示不要递归,这一点非常重要,否则如果键对应的内容中又出现键本身,就会引发递归(相当于进入了死循环)。如果希望映射的快捷键每次启动vim时都能生效,需要将映射写到用户主目录下的.vimrc文件中。- 录制宏。- 在命令模式下输入`qa`开始录制宏(其中`a`是寄存器的名字,也可以是其他英文字母或0-9的数字)。- 执行你的操作(光标操作、编辑操作等),这些操作都会被录制下来。- 如果录制的操作已经完成了,按`q`结束录制。- 通过`@a`(`a`是刚才使用的寄存器的名字)播放宏,如果要多次执行宏可以在前面加数字,例如`100@a`表示将宏播放100次。- 可以试一试下面的例子来体验录制宏的操作,该例子来源于[Harttle Land网站](https://harttle.land/tags.html#Vim),该网站上提供了很多关于vim的使用技巧,有兴趣的可以去了解一下。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cdl6AsRE-1578474464837)(./res/vim-macro.png)]

软件安装和配置

使用包管理工具

  1. yum - Yellowdog Updater Modified。

    • yum search:搜索软件包,例如yum search nginx
    • yum list installed:列出已经安装的软件包,例如yum list installed | grep zlib
    • yum install:安装软件包,例如yum install nginx
    • yum remove:删除软件包,例如yum remove nginx
    • yum update:更新软件包,例如yum update可以更新所有软件包,而yum update tar只会更新tar。
    • yum check-update:检查有哪些可以更新的软件包。
    • yum info:显示软件包的相关信息,例如yum info nginx
  2. rpm - Redhat Package Manager。
    • 安装软件包:rpm -ivh <packagename>.rpm
    • 移除软件包:rpm -e <packagename>
    • 查询软件包:rpm -qa,例如可以用rpm -qa | grep mysql来检查是否安装了MySQL相关的软件包。

下面以Nginx为例,演示如何使用yum安装软件。

(base) liuzuoping@liuzuoping~Lenove-G480:~$yum -y install nginx
...
Installed:nginx.x86_64 1:1.12.2-2.el7
Dependency Installed:nginx-all-modules.noarch 1:1.12.2-2.el7nginx-mod-http-geoip.x86_64 1:1.12.2-2.el7nginx-mod-http-image-filter.x86_64 1:1.12.2-2.el7nginx-mod-http-perl.x86_64 1:1.12.2-2.el7nginx-mod-http-xslt-filter.x86_64 1:1.12.2-2.el7nginx-mod-mail.x86_64 1:1.12.2-2.el7nginx-mod-stream.x86_64 1:1.12.2-2.el7
Complete!
(base) liuzuoping@liuzuoping~Lenove-G480:~$ yum info nginx
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Installed Packages
Name        : nginx
Arch        : x86_64
Epoch       : 1
Version     : 1.12.2
Release     : 2.el7
Size        : 1.5 M
Repo        : installed
From repo   : epel
Summary     : A high performance web server and reverse proxy server
URL         : http://nginx.org/
License     : BSD
Description : Nginx is a web server and a reverse proxy server for HTTP, SMTP, POP3 and: IMAP protocols, with a strong focus on high concurrency, performance and low: memory usage.
(base) liuzuoping@liuzuoping~Lenove-G480:~$ nginx -v
nginx version: nginx/1.12.2

移除Nginx。

(base) liuzuoping@liuzuoping~Lenove-G480:~$ nginx -s stop
(base) liuzuoping@liuzuoping~Lenove-G480:~$ yum -y remove nginx

下面以MySQL为例,演示如何使用rpm安装软件。要安装MySQL需要先到MySQL官方网站下载对应的RPM文件,当然要选择和你使用的Linux系统对应的版本。MySQL现在是Oracle公司旗下的产品,在MySQL被收购后,MySQL的作者重新制作了一个MySQL的分支MariaDB,可以通过yum进行安装。如果要安装MySQL需要先通过yum删除mariadb-libs这个可能会跟MySQL底层库冲突的库,然后还需要安装一个名为libaio的依赖库。

(base) liuzuoping@liuzuoping~Lenove-G480:~$ ls
mysql-community-client-5.7.22-1.el7.x86_64.rpm
mysql-community-common-5.7.22-1.el7.x86_64.rpm
mysql-community-libs-5.7.22-1.el7.x86_64.rpm
mysql-community-server-5.7.22-1.el7.x86_64.rpm
(base) liuzuoping@liuzuoping~Lenove-G480:~$ yum -y remove mariadb-libs
(base) liuzuoping@liuzuoping~Lenove-G480:~$ yum -y install libaio
(base) liuzuoping@liuzuoping~Lenove-G480:~$ ls | xargs rpm -ivh
warning: mysql-community-client-5.7.22-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing...                          ################################# [100%]
...

说明:由于MySQL和MariaDB的底层依赖库是有冲突的,所以上面我们首先用yum移除了名为mariadb-libs的依赖库并安装了名为libaio的依赖库。由于我们将安装MySQL所需的rpm文件放在一个独立的目录中,所以可以通过ls命令查看到安装文件并用xargsls的输出作为参数交给rpm -ivh来进行安装。关于MySQL和MariaDB之间的关系,可以阅读维基百科上关于MariaDB的介绍。

移除安装的MySQL。

(base) liuzuoping@liuzuoping~Lenove-G480:~$ rpm -qa | grep mysql | xargs rpm -e

下载解压配置环境变量

下面以安装MongoDB为例,演示这类软件应该如何安装。

(base) liuzuoping@liuzuoping~Lenove-G480:~$ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.5.tgz
--2018-06-21 18:32:53--  https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.5.tgz
Resolving fastdl.mongodb.org (fastdl.mongodb.org)... 52.85.83.16, 52.85.83.228, 52.85.83.186, ...
Connecting to fastdl.mongodb.org (fastdl.mongodb.org)|52.85.83.16|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 100564462 (96M) [application/x-gzip]
Saving to: ‘mongodb-linux-x86_64-rhel70-3.6.5.tgz’
100%[==================================================>] 100,564,462  630KB/s   in 2m 9s
2018-06-21 18:35:04 (760 KB/s) - ‘mongodb-linux-x86_64-rhel70-3.6.5.tgz’ saved [100564462/100564462]
(base) liuzuoping@liuzuoping~Lenove-G480:~$ gunzip mongodb-linux-x86_64-rhel70-3.6.5.tgz
(base) liuzuoping@liuzuoping~Lenove-G480:~$ tar -xvf mongodb-linux-x86_64-rhel70-3.6.5.tar
mongodb-linux-x86_64-rhel70-3.6.5/README
mongodb-linux-x86_64-rhel70-3.6.5/THIRD-PARTY-NOTICES
mongodb-linux-x86_64-rhel70-3.6.5/MPL-2
mongodb-linux-x86_64-rhel70-3.6.5/GNU-AGPL-3.0
mongodb-linux-x86_64-rhel70-3.6.5/bin/mongodump
mongodb-linux-x86_64-rhel70-3.6.5/bin/mongorestore
mongodb-linux-x86_64-rhel70-3.6.5/bin/mongoexport
mongodb-linux-x86_64-rhel70-3.6.5/bin/mongoimport
mongodb-linux-x86_64-rhel70-3.6.5/bin/mongostat
mongodb-linux-x86_64-rhel70-3.6.5/bin/mongotop
mongodb-linux-x86_64-rhel70-3.6.5/bin/bsondump
mongodb-linux-x86_64-rhel70-3.6.5/bin/mongofiles
mongodb-linux-x86_64-rhel70-3.6.5/bin/mongoreplay
mongodb-linux-x86_64-rhel70-3.6.5/bin/mongoperf
mongodb-linux-x86_64-rhel70-3.6.5/bin/mongod
mongodb-linux-x86_64-rhel70-3.6.5/bin/mongos
mongodb-linux-x86_64-rhel70-3.6.5/bin/mongo
mongodb-linux-x86_64-rhel70-3.6.5/bin/install_compass
(base) liuzuoping@liuzuoping~Lenove-G480:~$ vim .bash_profile
...
PATH=$PATH:$HOME/bin:$HOME/mongodb-linux-x86_64-rhel70-3.6.5/bin
export PATH
...
(base) liuzuoping@liuzuoping~Lenove-G480:~$ source .bash_profile
(base) liuzuoping@liuzuoping~Lenove-G480:~$ mongod --version
db version v3.6.5
git version: a20ecd3e3a174162052ff99913bc2ca9a839d618
OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
allocator: tcmalloc
modules: none
build environment:distmod: rhel70distarch: x86_64target_arch: x86_64
(base) liuzuoping@liuzuoping~Lenove-G480:~$ mongo --version
MongoDB shell version v3.6.5
git version: a20ecd3e3a174162052ff99913bc2ca9a839d618
OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
allocator: tcmalloc
modules: none
build environment:distmod: rhel70distarch: x86_64target_arch: x86_64

说明:当然也可以通过yum来安装MongoDB,具体可以参照官方网站上给出的说明。

源代码构建安装

  1. 安装Python 3.6。

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ yum install gcc
    (base) liuzuoping@liuzuoping~Lenove-G480:~$ wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
    (base) liuzuoping@liuzuoping~Lenove-G480:~$ gunzip Python-3.6.5.tgz
    (base) liuzuoping@liuzuoping~Lenove-G480:~$ tar -xvf Python-3.6.5.tar
    (base) liuzuoping@liuzuoping~Lenove-G480:~$ cd Python-3.6.5
    (base) liuzuoping@liuzuoping~Lenove-G480:~$ ./configure --prefix=/usr/local/python36 --enable-optimizations
    (base) liuzuoping@liuzuoping~Lenove-G480:~$ yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
    (base) liuzuoping@liuzuoping~Lenove-G480:~$ make && make install
    ... 配置环境变量 ...
    (base) liuzuoping@liuzuoping~Lenove-G480:~$ ln -s /usr/local/python36/bin/python3.6 /usr/bin/python3
    (base) liuzuoping@liuzuoping~Lenove-G480:~$ python3 --version
    Python 3.6.5
    (base) liuzuoping@liuzuoping~Lenove-G480:~$ python3 -m pip install -U pip
    (base) liuzuoping@liuzuoping~Lenove-G480:~$ pip3 --version
    
  2. 安装Redis-3.2.12。

    [root@iZwz97tbgo9lkabnat2lo8Z ~]# wget http://download.redis.io/releases/redis-3.2.12.tar.gz
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# gunzip redis-3.2.12.tar.gz
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# tar -xvf redis-3.2.12.tar
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# cd redis-3.2.12
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# make && make install
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# redis-server --version
    Redis server v=3.2.12 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=5bc5cd3c03d6ceb6
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# redis-cli --version
    redis-cli 3.2.12
    

配置服务

  1. 启动服务。

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ systemctl start firewalld
    
  2. 终止服务。

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ systemctl stop firewalld
    
  3. 重启服务。

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ systemctl restart firewalld
    
  4. 查看服务。

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ systemctl status firewalld
    
  5. 设置是否开机自启。

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ systemctl enable firewalld
    Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
    Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
    (base) liuzuoping@liuzuoping~Lenove-G480:~$ systemctl disable firewalld
    Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
    Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
    

计划任务

  1. crontab命令。

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ crontab -e
    * * * * * echo "hello, world!" >> /root/hello.txt
    59 23 * * * rm -f /root/*.log
    

    说明:输入crontab -e命令会打开vim来编辑Cron表达式并指定触发的任务,上面我们定制了两个计划任务,一个是每分钟向/root目录下的hello.txt中追加输出hello, world!;另一个是每天23时59分执行删除/root目录下以log为后缀名的文件。如果不知道Cron表达式如何书写,可以参照/etc/crontab文件中的提示(下面会讲到)或者用谷歌或百度搜索一下,也可以使用Cron表达式在线生成器来生成Cron表达式。

  2. crontab相关文件。

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ cd /etc
    [root@iZwz97tbgo9lkabnat2lo8Z etc]# ls -l | grep cron
    -rw-------.  1 root root      541 Aug  3  2017 anacrontab
    drwxr-xr-x.  2 root root     4096 Mar 27 11:56 cron.d
    drwxr-xr-x.  2 root root     4096 Mar 27 11:51 cron.daily
    -rw-------.  1 root root        0 Aug  3  2017 cron.deny
    drwxr-xr-x.  2 root root     4096 Mar 27 11:50 cron.hourly
    drwxr-xr-x.  2 root root     4096 Jun 10  2014 cron.monthly
    -rw-r--r--   1 root root      493 Jun 23 15:09 crontab
    drwxr-xr-x.  2 root root     4096 Jun 10  2014 cron.weekly
    (base) liuzuoping@liuzuoping~Lenove-G480:~$ vim crontab1 SHELL=/bin/bash2 PATH=/sbin:/bin:/usr/sbin:/usr/bin3 MAILTO=root45 # For details see man 4 crontabs67 # Example of job definition:8 # .---------------- minute (0 - 59)9 # |  .------------- hour (0 - 23)10 # |  |  .---------- day of month (1 - 31)11 # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...12 # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat13 # |  |  |  |  |14 # *  *  *  *  * user-name  command to be executed
    

    通过修改/etc目录下的crontab文件也能够定制计划任务。

网络访问和管理

  1. 安全远程连接 - ssh

  2. 通过网络获取资源 - wget

    • -b 后台下载模式
    • -O 下载到指定的目录
    • -r 递归下载
  3. 显示/操作网络配置(旧) - ifconfig

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ ifconfig eth0
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.18.61.250  netmask 255.255.240.0  broadcast 172.18.63.255ether 00:16:3e:02:b6:46  txqueuelen 1000  (Ethernet)RX packets 1067841  bytes 1296732947 (1.2 GiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 409912  bytes 43569163 (41.5 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions
    
  4. 显示/操作网络配置(新) - ip

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ ip address
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:16:3e:02:b6:46 brd ff:ff:ff:ff:ff:ffinet 172.18.61.250/20 brd 172.18.63.255 scope global eth0valid_lft forever preferred_lft forever
    
  5. 网络可达性检查 - ping

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ ping www.baidu.com -c 3
    PING www.a.shifen.com (220.181.111.188) 56(84) bytes of data.
    64 bytes from 220.181.111.188 (220.181.111.188): icmp_seq=1 ttl=51 time=36.3 ms
    64 bytes from 220.181.111.188 (220.181.111.188): icmp_seq=2 ttl=51 time=36.4 ms
    64 bytes from 220.181.111.188 (220.181.111.188): icmp_seq=3 ttl=51 time=36.4 ms
    --- www.a.shifen.com ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2002ms
    rtt min/avg/max/mdev = 36.392/36.406/36.427/0.156 ms
    
  6. 查看网络服务和端口 - netstat

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ netstat -nap | grep nginx
    
  7. 安全文件拷贝 - scp

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ scp root@1.2.3.4:/root/guido.jpg hellokitty@4.3.2.1:/home/hellokitty/pic.jpg
    
  8. 安全文件传输 - sftp

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ sftp root@120.77.222.217
    root@120.77.222.217's password:
    Connected to 120.77.222.217.
    sftp>
    
    • help:显示帮助信息。

    • ls/lls:显示远端/本地目录列表。

    • cd/lcd:切换远端/本地路径。

    • mkdir/lmkdir:创建远端/本地目录。

    • pwd/lpwd:显示远端/本地当前工作目录。

    • get:下载文件。

    • put:上传文件。

    • rm:删除远端文件。

    • bye/exit/quit:退出sftp。

进程管理

  1. ps - 查询进程。

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ ps -ef
    UID        PID  PPID  C STIME TTY          TIME CMD
    root         1     0  0 Jun23 ?        00:00:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
    root         2     0  0 Jun23 ?        00:00:00 [kthreadd]
    ...
    (base) liuzuoping@liuzuoping~Lenove-G480:~$ ps -ef | grep mysqld
    root      4943  4581  0 22:45 pts/0    00:00:00 grep --color=auto mysqld
    mysql    25257     1  0 Jun25 ?        00:00:39 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
    
  2. kill - 终止进程。

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ kill 1234
    (base) liuzuoping@liuzuoping~Lenove-G480:~$ kill -9 1234
    

    例子:用一条命令强制终止正在运行的Redis进程。

    ps -ef | grep redis | grep -v grep | awk '{print $2}' | xargs kill
    
  3. 将进程置于后台运行。

    • Ctrl+Z
    • &
    (base) liuzuoping@liuzuoping~Lenove-G480:~$ mongod &
    (base) liuzuoping@liuzuoping~Lenove-G480:~$ redis-server
    ...
    ^Z
    [4]+  Stopped                 redis-server
    
  4. jobs - 查询后台进程。

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ jobs
    [2]   Running                 mongod &
    [3]-  Stopped                 cat
    [4]+  Stopped                 redis-server
    
  5. bg - 让进程在后台继续运行。

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ bg %4
    [4]+ redis-server &
    (base) liuzuoping@liuzuoping~Lenove-G480:~$ jobs
    [2]   Running                 mongod &
    [3]+  Stopped                 cat
    [4]-  Running                 redis-server &
    
  6. fg - 将后台进程置于前台。

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ fg %4
    redis-server
    ^C5554:signal-handler (1530025281) Received SIGINT scheduling shutdown...
    5554:M 26 Jun 23:01:21.413 # User requested shutdown...
    5554:M 26 Jun 23:01:21.413 * Saving the final RDB snapshot before exiting.
    5554:M 26 Jun 23:01:21.415 * DB saved on disk
    5554:M 26 Jun 23:01:21.415 # Redis is now ready to exit, bye bye...
    

    说明:置于前台的进程可以使用Ctrl+C来终止它。

  7. top - 进程监控。

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ top
    top - 23:04:23 up 3 days, 14:10,  1 user,  load average: 0.00, 0.01, 0.05
    Tasks:  65 total,   1 running,  64 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  1016168 total,   191060 free,   324700 used,   500408 buff/cache
    KiB Swap:        0 total,        0 free,        0 used.   530944 avail Mem
    ...
    

系统性能

  1. 查看系统活动信息 - sar

  2. 查看内存使用情况 - free

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ freetotal        used        free      shared  buff/cache   available
    Mem:        1016168      323924      190452         356      501792      531800
    Swap:             0           0           0
    
  3. 查看进程使用内存状况 - pmap

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ psPID TTY          TIME CMD4581 pts/0    00:00:00 bash5664 pts/0    00:00:00 ps
    (base) liuzuoping@liuzuoping~Lenove-G480:~$ pmap 4581
    4581:   -bash
    0000000000400000    884K r-x-- bash
    00000000006dc000      4K r---- bash
    00000000006dd000     36K rw--- bash
    00000000006e6000     24K rw---   [ anon ]
    0000000001de0000    400K rw---   [ anon ]
    00007f82fe805000     48K r-x-- libnss_files-2.17.so
    00007f82fe811000   2044K ----- libnss_files-2.17.so
    ...
    
  4. 报告设备CPU和I/O统计信息 - iostat

    (base) liuzuoping@liuzuoping~Lenove-G480:~$ iostat
    Linux 3.10.0-693.11.1.el7.x86_64 (iZwz97tbgo9lkabnat2lo8Z)      06/26/2018      _x86_64_       (1 CPU)
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle0.79    0.00    0.20    0.04    0.00   98.97
    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    vda               0.85         6.78        21.32    2106565    6623024
    vdb               0.00         0.01         0.00       2088          0
    

Linux中的编辑器 - vim相关推荐

  1. Linux学习总结(19)——Linux中文本编辑器vim特殊使用方法

    1. vim比对功能 在linux的环境下 用于观察两个文件的一致性的时候我们一般用diff这个命令来比对,但是这个命令不能你特别详细的比对出 具体的位置或者行对比.这里就用到了vim的对比功能 vi ...

  2. linux vim命令pdf,Linux中vi、vim命令大全

    Linux中vi.vim命令大全 2019-11-21 16:55Linux命令大全 Linux vi 是 unix/linux 下极为普遍的一种文本编辑器. vi 有各种变种, 在不同的机器上有不同 ...

  3. 在linux中的vi中的删除操作,linux中vi和vim操作

    一.简单介绍 vi 和 vim 类似于windows的文本编辑器 所有的Linux系统都会内置vi文本编辑器 vim可以看做是vi增强版,具有程序编辑能力,支持语法高亮,代码补全,编译及错误跳转等功能 ...

  4. linux中vi和vim的区别

    它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面. vim的这些优势主要体现在以下几个方面: 1.多级撤销 我们知道在vi里,按 u只能撤消 ...

  5. Linux中Vi和Vim区别

    它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面. vim的这些优势主要体现在以下几个方面: 1.多级撤消 我们知道在vi里,按u只能撤消上次 ...

  6. linux文本编辑器vi实验心得,linux中vi编辑器的练习心得

    1. 用vi编写一个文档test.txt,将其存放在用户在用户主目录下,内容如下: Plagiarism is breach of Integrity.It is a form of cheating ...

  7. 在linux中建立一个vim的目录,Linux学习笔记一(目录结构、Vim编辑器、用户管理)...

    1.Linux介绍 linux是一个开源.免费的操做系统,其稳定性.安全性.处理多并发已经获得 业界的承认,目前不少企业级的项目都会部署到Linux/unix系统上. Linux主要的发行版: Ubu ...

  8. kali linux 里vim如何使用_Kali Linux的vi编辑器/vim编辑器使用方法

    转载声明:本文为转载文章 Kali Linux系统的vi编辑器/vim编辑器的使用和CentOS有很多不同.基本使用方法如下 1.vi的基本概念 基本上vi可以分为三种状态,分别是命令模式(comma ...

  9. linux中vi过滤,vim高级编辑(一)

    ------------------------------------------------------------------------------------------------ 本文内 ...

最新文章

  1. 对象是否要被回收(引用计数和可达性分析算法)
  2. JS+CSS打造一款漂亮绿色相册代码
  3. linux mint cinnamon_最佳 Linux 发行版汇总
  4. 数论-扩展中国剩余定理
  5. iOS编程——经过UUID和KeyChain来代替Mac地址实现iOS设备的唯一标示(OC版)
  6. docker没有下载完全_会用Docker的人都别装了,这多简单呐
  7. C++ 控制结构和函数(二) —— 函数I(Functions I)
  8. div超出不换行_div+CSS设置一行内文字超过宽度不换行且不显示
  9. devops_您的DevOps阅读心愿单的10本书
  10. oracle一条sql执行导入sql文件
  11. XGBoost 损失函数Loss Functions
  12. 【小记】谷歌浏览器安装Axure插件,无需下载
  13. C# 导出Excel并插入二维码图片
  14. 3D引擎优化: 分布式渲染系统能聚沙成塔
  15. Unity3D - 高动态范围(Hight Dynamic Range - HDR)
  16. 电工电子学习笔记----1.电阻、电容、阻抗、容抗复习巩固
  17. Python实现德州扑克游戏
  18. 模拟时钟(AnalogClock)
  19. 科学计算机弧度,在线计算器
  20. Erasure-Code(纠删码) 最佳实践

热门文章

  1. WinCE 调试某手写输入法时遇到的加载手写库失败的问题
  2. 字符函数和字符串函数(一)
  3. 如何在高版本谷歌Chrome浏览器中用VLC播放海康、大华RTSP实时视频?
  4. 编辑制作照片墙Posterino
  5. 那英唱歌软件测试,是那英躺着唱《默》还是真唱?看到这个细节你就会知道!...
  6. Android 支付宝集成及解决支付宝报null指针问题
  7. 最牛逼的自媒体平台今日头条申请秘籍,包过!
  8. msde能连mysql吗_关于MSDE安装不了的解决方法
  9. Python UserAgent解析库——user_agents,判断手机等访问设备
  10. AMD二代推土机调整 砍掉PCI-E 3.0