服务器 
首页 > 服务器 > 浏览文章

linux后台运行的几种方式(小结)

(编辑:jimmy 日期: 2024/11/19 浏览:3 次 )

1、nohup

将程序以忽略挂起信号的方式运行起来

补充说明
nohup命令 可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。
无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。
如果当前目录的 nohup.out 文件不可写,输出重定向到$HOME/nohup.out文件中。
如果没有文件能创建或打开以用于追加,那么 command 参数指定的命令不可调用。
如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

简单实例:

nohup command &

指定输出实例

nohup command > myout.file 2>&1 &

其他相关命令
ctrl + z #可以将一个正在前台执行的命令放到后台,并且处于暂停状态。
fg #将后台任务切换到前台执行
bg #将一个在后台暂停的命令,变成在后台继续执行。如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出
jobs #查看后台运行的状态,jobs -l选项可显示所有任务的PID
ps -ef | grep command 或者 ps aux | grep command #查看进程
kill -9 进程id #杀掉对应的进程,

更高级的用法如下:

ps aux | grep command | grep -v grep | awk '{print $1}' | xargs kill -9 #这个表示直接通过command获取进程id并直接kill掉

2、screen

用于命令行终端切换

a、会话恢复
只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,
用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。
同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)

b、多窗口
在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,
并可以自由的重定向各个窗口的输入和输出。Screen实现了基本的文本操作,如复制粘贴等;还提供了类似滚动条的功能,
可以查看窗口状况的历史记录。窗口还可以被分区和命名,还可以监视后台窗口的活动。 会话共享 Screen可以让一个或多个用户
从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,
可以对窗口进行密码保护。

c、screen的安装

yum install -y screen

基本语法
screen -AmRvx -[ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]

选项
-A  将所有的视窗都调整为目前终端机的大小。
-d <作业名称>  将指定的screen作业离线。
-h <行数>  指定视窗的缓冲区行数。
-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称>  恢复离线的screen作业。
-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s  指定建立新视窗时,所要执行的shell。
-S <作业名称>  指定screen作业的名称。
-v  显示版本信息。
-x  恢复之前离线的screen作业。
-ls或--list  显示目前所有的screen作业。
-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。

常用screen参数
screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session

在每个screen session 下,所有命令都以 ctrl+a(Ctrl + a) 开始。

Ctrl + a "_blank" href="https://wangchujiang.com/linux-command/c/screen.html" rel="external nofollow" >https://wangchujiang.com/linux-command/c/screen.html

3、daemonize工具

##安装
git clone git://github.com/bmc/daemonize.git
sh configure && make && sudo make install

-a #挂载到输出文件,而不是冲掉默认值。只有应用了-e and/or -o 被指定的情况。
-e #重定向输出标准错误到指定的文件中,替代/dev/null
-o #重定向输出标准到指定的文件中,替代/dev/null
-E name=value #增加环境变量给给后台程序。这个这个参数类型一定要是name=value格式。参数可以设置多次。
-c directory #定制运行命令前的目录。
-p pidfile #定制自己的pid存放位置。
-l lockfile #单实例启动时将会检查这个文件。
-u user #定制程序以谁的身份运行的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

上一篇:Docker如何使用nginx搭建tomcat集群(图文详解)
下一篇:linux服务器上使用nginx访问本地静态资源的方法
一句话新闻
一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?