快速上手几个 Linux 命令:每家公司都有自己的黑话( 四 )


vim hello,就是打开一个文件,名字叫 hello 。如果没有这个文件,就先创建一个 。
【快速上手几个 Linux 命令:每家公司都有自己的黑话】我们其实就相当于打开了一个 notepad 。如果文件有内容,就会显示出来 。移动光标的位置,通过上下左右键就行 。如果想要编辑,就把光标移动到相应的位置,输入i,意思是 insert 。进入编辑模式,可以插入、删除字符,这些都和 notepad 很像 。要想保存编辑的文本,我们使用esc键退出编辑模式,然后输入“:”,然后在“:”后面输入命令w,意思是 write,这样就可以保存文本,冒号后面输入q,意思是 quit,这样就会退出 vim 。如果编辑了,还没保存,不想要了,可以输入q! 。
好了,掌握这些基本够用了,想了解更复杂的,你可以自己去看文档 。
通过 vim .bashrc,将 export 的两行加入后,输入:wq,写入并且退出,这样就编辑好了 。
运行程序好了,装好了程序,可以运行程序了 。
我们都知道 Windows 下的程序,如果后缀名是 exe,双击就可以运行了 。
Linux 不是根据后缀名来执行的 。它的执行条件是这样的:只要文件有 x 执行权限,都能到文件所在的目录下,通过 ./filename运行这个程序 。当然,如果放在 PATH 里设置的路径下面,就不用./ 了,直接输入文件名就可以运行了,Linux 会帮你找 。
这是Linux 执行程序最常用的一种方式,通过 shell 在交互命令行里面运行 。
这样执行的程序可能需要和用户进行交互,例如允许让用户输入,然后输出结果也打印到交互命令行上 。这种方式比较适合运行一些简单的命令,例如通过 date 获取当前时间 。这种模式的缺点是,一旦当前的交互命令行退出,程序就停止运行了 。
这样显然不能用来运行那些需要“永远“在线的程序 。比如说,运行一个博客程序,我总不能老是开着交互命令行,博客才可以提供服务 。一旦我要去睡觉了,关了命令行,我的博客别人就不能访问了,这样肯定是不行的 。
于是,我们就有了Linux 运行程序的第二种方式,后台运行 。
这个时候,我们往往使用nohup命令 。这个命令的意思是 no hang up(不挂起),也就是说,当前交互命令行退出的时候,程序还要在 。
当然这个时候,程序不能霸占交互命令行,而是应该在后台运行 。最后加一个 &,就表示后台运行 。
另外一个要处理的就是输出,原来什么都打印在交互命令行里,现在在后台运行了,输出到哪里呢?输出到文件是最好的 。
最终命令的一般形式为nohup command >out.file 2>&1 & 。这里面,“1”表示文件描述符 1,表示标准输出,“2”表示文件描述符 2,意思是标准错误输出,“2>&1”表示标准输出和错误输出合并了 。合并到哪里去呢?到 out.file 里 。
那这个进程如何关闭呢?我们假设启动的程序包含某个关键字,那就可以使用下面的命令 。
ps -ef |grep 关键字 |awk '{print $2}'|xargs kill -9从这个命令中,我们多少能看出 shell 的灵活性和精巧组合 。
其中 ps -ef 可以单独执行,列出所有正在运行的程序,grep 上面我们介绍过了,通过关键字找到咱们刚才启动的程序 。
awk 工具可以很灵活地对文本进行处理,这里的 awk '{print $2}'是指第二列的内容,是运行的程序 ID 。我们可以通过 xargs 传递给 kill -9,也就是发给这个运行的程序一个信号,让它关闭 。如果你已经知道运行的程序 ID,可以直接使用 kill 关闭运行的程序 。
在 Windows 里面还有一种程序,称为服务 。这是系统启动的时候就在的,我们可以通过控制面板的服务管理启动和关闭它 。

快速上手几个 Linux 命令:每家公司都有自己的黑话

文章插图
 
Linux 也有相应的服务,这就是程序运行的第三种方式,以服务的方式运行 。例如常用的数据库 MySQL,就可以使用这种方式运行 。
例如在 Ubuntu 中,我们可以通过 apt-get install mysql-server 的方式安装 MySQL,然后通过命令systemctl start mysql启动 MySQL,通过systemctl enable mysql设置开机启动 。之所以成为服务并且能够开机启动,是因为在 /lib/systemd/system 目录下会创建一个 XXX.service 的配置文件,里面定义了如何启动、如何关闭 。
在 CentOS 里有些特殊,MySQL 被 Oracle 收购后,因为担心授权问题,改为使用 MariaDB,它是 MySQL 的一个分支 。通过命令yum install mariadb-server mariadb进行安装,命令systemctl start mariadb启动,命令systemctl enable mariadb设置开机启动 。同理,会在 /usr/lib/systemd/system 目录下,创建一个 XXX.service 的配置文件,从而成为一个服务 。


推荐阅读