linux后台程序状态是d,linux后台运⾏的⼏种⽅式(⼩结)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 ? -> 显⽰所有键绑定信息
Ctrl + a c -> 创建⼀个新的运⾏shell的窗⼝并切换到该窗⼝
Ctrl + a n -> Next,切换到下⼀个 windowlinux重定向
Ctrl + a p -> Previous,切换到前⼀个 window
Ctrl + a 0..9 -> 切换到第 0..9 个 window
Ctrl+a [Space] -> 由视窗0循序切换到视窗9
Ctrl + a Ctrl + a -> 在两个最近使⽤的 window 间切换
Ctrl + a x -> 锁住当前的 window,需⽤⽤户密码解锁
Ctrl + a d -> detach,暂时离开当前session,将⽬前的 screen session (可能含有多个 windows) 丢到后台执⾏,并会回到还没进screen 时的状态,此时在 screen session ⾥,每个 window 内运⾏的 process (⽆论是前台/后台)都在继续执⾏,即使 logout 也不影响。
Ctrl + a z -> 把当前session放到后台执⾏,⽤ shell 的 fg 命令则可回去。
Ctrl + a w -> 显⽰所有窗⼝列表
Ctrl + a t -> time,显⽰当前时间,和系统的 load
Ctrl + a k -> kill window,强⾏关闭当前的 window
Ctrl + a -> 进⼊ copy mode,在 copy mode 下可以回滚、搜索、复制就像⽤使⽤ [vi ⼀样
C-b Backward,PageUp
C-f Forward,PageDown
H(⼤写) High,将光标移⾄左上⾓
L Low,将光标移⾄左下⾓
0 移到⾏⾸
$ ⾏末
w forward one word,以字为单位往前移
b backward one word,以字为单位往后移
Space 第⼀次按为标记区起点,第⼆次按为终点
Esc 结束 copy mode
Ctrl + a ] -> paste,把刚刚在 copy mode 选定的内容贴上
操作⽰例见:
3、daemonize⼯具
##安装 git clone git://github/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 #定制程序以谁的⾝份运⾏的。
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持脚本之家。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论