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
其中 ps -ef 可以单独执行,列出所有正在运行的程序,grep 上面我们介绍过了,通过关键字找到咱们刚才启动的程序。
awk 工具可以很灵活地对文本进行处理,这里的 awk '{print $2}'是指第二列的内容,是运行的程序 ID。
我们可以通过 xargs 传递给 kill -9,也就是发给这个运行的程序一个信号,让它关闭。如果你已经知道运行的程序 ID,可以直接使用 kill 关闭运行的程序。
Linux 程序运行的第三种方式,以服务的方式运行。
例如在 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 的配置文件,从而成为一个服务。