在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。...(ps -ef | grep 进程号 或者 kill -9 进程号) nohup 使用&命令后,作业被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户时),作业就会停止运行。...pid 前台进程的终止:ctrl+c 前后台进程的切换与控制 ctrl + z 命令 将一个正在前台执行的命令放到后台,并且处于暂停状态。...思考 问题1-为什么ssh一关闭,程序就不再运行了 元凶:SIGHUP 信号 让我们来看看为什么关掉窗口/断开连接会使得正在运行的程序死掉。...因为他们的程序特殊,比如httpd –k start运行这个以后,他不属于sshd这个进程组 而是单独的进程组,所以就算关闭了ssh,和他也没有任何关系!
问题的引入 程序员最不能容忍的是在使用终端的时候往往因为网络,关闭屏幕,执行 CTRL+C 等原因造成 ssh 断开造成正在运行程序退出,使得我们的工作功亏一篑。...sh test.sh & 3.nohup 指令 nohup(no hang up), 意思就是不挂断运行,用 nohup 运行命令可以使命令永久执行下去,和用户终端没有关系,断开 SSH 不影响运行,.../test.sh > out.log 2>&1 & 4.ctrl + z、jobs、fg、bg 如果我们程序在启动的时候并没有使用 &,nohup 怎么办呢,难道我们需要先执行 ctrl + c 将在前台执行的进程终止执行再重新启动吗...4.1 ctrl + z 将一个正在前台执行的作业进程放到后台,并且暂停,用术语讲就是挂起, 执行后如下: [1]+ Stopped ..../test.sh & 4.4 fg 将后台中的作业进程调至前台继续运行, 例如把 2 号作业(./test2.sh &)调至前台运行 fg 2 .
如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。...nohup sh scripts.sh & 3.2切换为非关起 disown disown命令可以从当前 shell 的作业列表中移除全部作业,也可移除指定的一到多个作业;正在运行的作业也可以移除...;也可以标记作业,使得它们在当前 shell 退出后也不会结束。...Screen 中有会话的概念,用户可以在一个会话中创建多个 screen 窗口,在每一个 screen 窗口中就像操作一个真实的 t elnet/SSH 连接窗口那样。...#5 重新进入wget终端,任务正在运行 $ screen -r wget # 6 关闭会话任务,如果在会话中使用exit,就会在退出会话,也关闭了该会话,或者按ctrl+a,k # screen
linux screen 命令详解 一、背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份、ftp 传输等等。...GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。 会话恢复 只要Screen本身没有终止,在其内部运行的会话都可以恢复。...另一个关闭窗口的方法是使用C-a k,这个快捷键杀死当前的窗口,同时也将杀死这个窗口中正在运行的进程。...如果一个Screen会话中最后一个窗口被关闭了,那么整个Screen会话也就退出了,screen进程会被终止。...除了依次退出/杀死当前Screen会话中所有窗口这种方法之外,还可以使用快捷键C-a :,然后输入quit命令退出Screen会话。需要注意的是,这样退出会杀死所有窗口并退出其中运行的所有程序。
会话 会话(session)是一个或多个进程组的集合,它开始于用户登陆终端,结束于用户退出登陆。其义如其名,就是指用户与系统的一次对话的全程。...这是因为用户注销或者网络断开时,SIGHUP信号会被发送到会话所属的子进程,而此 SIGHUP 的默认处理方式是终止收到该信号的进程。所以若程序中没有捕捉该信号,当终端关闭后,会话所属进程就会退出。...我们常将 nohup 和 & 搭配到一块使用,执行命令如下 nohup command >/dev/null 2>&1 & 这样,就可以放心的等待进程运行结果了。...根据上面的概念我们得知终端关闭后进程退出是因为会话首进程向进程发送了 SIGHUP 信号,setsid 就厉害了,它直接打开一个新的会话来执行命令,那么原会话的终端的状态就再也不会影响到此进程了。...jobs jobs 是作业的基础命令,用它可以查看正在运行的作业的信息,其输出如下: jobs [1]- Running php test.php & [2]+ Stopped
背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份、ftp 传输等等。...会话恢复 只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。...另一个关闭窗口的方法是使用C-a k,这个快捷键杀死当前的窗口,同时也将杀死这个窗口中正在运行的进程。...如果一个Screen会话中最后一个窗口被关闭了,那么整个Screen会话也就退出了,screen进程会被终止。...除了依次退出/杀死当前Screen会话中所有窗口这种方法之外,还可以使用快捷键C-a :,然后输入quit命令退出Screen会话。 需要注意的是,这样退出会杀死所有窗口并退出其中运行的所有程序。
那就只剩下Signal的情况了;经过一番排查后,发现每次tomcat意外退出的时间与ssh会话结束的时间正好吻合。...这种情况下,如果用户直接关闭ssh终端的窗口(用鼠标或快捷键),则java进程也会退出。而如果先ctrl-c终止test.sh进程,然后再关闭ssh终端的话,则java进程不会退出。...我们的推测是ssh窗口在关闭时,对当前交互的shell以及正在运行的test.sh等子进程发送某个退出的Signal,找了一台装有systemtap的机器来验证,所用的stap脚本是从涧泉同学那里copy...(进程组)是相同的,这时我们用kill -2是可以杀掉sleep 1000进程的。...不开启作业控制的话,脚本里的后台进程可以通过设置忽略SIGINT信号来避免父进程对组中成员的传播,因为对它来说这个信号已经没有意义。
: 运行了一个程序两个小时之后,你心想:再有一个小时程序就运行完了,于是你兴致勃勃的准备看结果。...此时你突然发现自己没有使用 nohup,这就意味着这个程序在自己离开之后会死掉。之前两个小时的运行时间就浪费了。 于是你满怀悔恨的按下了CTR+c,然后使用 nohup 重新运行程序。...原因是:SSH会话关闭时,ssh所关联的pty关闭,系统会给这个pty所关联的session中的所有进程发送SIGHUP信号,SIGHUP的默认信号处理程序是终止进程,除非进程自己处理了SIGHUP。...3.2 jobs jobs命令用来查看当前有多少在后台运行。 在Linux中,启动、停止、终止以及恢复作业的这些功能统称为作业控制。...作业控制中的关键命令是jobs命令,jobs命令允许查看shell当前正在处理的作业。jobs命令中输出有加号和减号,带加号的作业被当做默认作业,带减号的为下一个默认作业。
Ctrl+Z:中断前台作业,并放置在后台 Ctrl+C:终止当前前台作业 nohup:即使关闭终端也会执行(一般搭配上面的&) 在后台运行作业 在原命令的最后加上 &,可让这个作业在后台运行。...# 下面显示一个正在运行的后台作业 $ jobs [1]+ Running sleep 100 & # 切换回前台运行 $ fg %1 sleep 100 “众所周知...nohup:关闭终端也执行 “很多时候,你是通过ssh登录到远程服务器,再执行Shell脚本或命令,如果你退出了终端(终止远程连接),则该进程/命令将被杀死。...如果不确定该作业何时完成,则最好让该作业在后台运行,但是,如果你退出系统,该作业将被Shell停止并终止,当进程收到SIGHUP时,如何使作业在后台运行?...总结: 只能在初始化作业的shell里管控作业 fg %n bg %n 切换前后台作业 nohup & 搭配,帮助长时间后台运行的作业,在你退出系统,依旧可运行
会话启动后,只要腾讯云CVM服务器正在运行,或者直到您停止会话,它将继续运行。您可以注销当前会话,然后重新连接到上一个会话。...可以将多个窗口连接到同一会话,并根据需要在它们之间切换。当您想要并行运行多个作业时,这会很有用。...再次按相同的组合可退出缩放模式 出口 关闭活动窗格 Prefix + x 强制在窗格中终止无响应的进程 管理tmux会话 有时甚至多个窗口和窗格都是不够的,您需要通过将布局分组到单独的会话中来逻辑地分离布局...但是只有当没有另一个以相同字符串开头的命令时,才有效。...再次按相同的组合可退出缩放模式 tmux kill-server 销毁所有会话并终止所有进程 创建tmux配置文件 当你对tmux感到满意时,你可能想要改变一些默认值。
reboot 重新启动正在运行的Linux操作系统 补充说明 reboot命令用来重新启动正在运行的Linux操作系统。...会话恢复 只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。...另一个关闭窗口的方法是使用Ctrl+a键,然后按下k键,最后当提示你是否要杀死这个会话时按下y键,这个快捷键会杀死当前的窗口,同时也将杀死这个窗口中正在运行的进程。...如果一个Screen会话中最后一个窗口被关闭了,那么整个Screen会话也就退出了,screen进程会被终止。...除了依次退出/杀死当前Screen会话中所有窗口这种方法之外,还可以使用快捷键C-a :,然后输入quit命令退出Screen会话。需要注意的是,这样退出会杀死所有窗口并退出其中运行的所有程序。
故障现象: 昨日中午接到客户电话,描述道:生产环境有一台服务器通过外网IP登录不上,在内网IP ssh登陆也密码错误;怀疑是被入侵了,立即登陆VMware ESXi管理端登陆此虚拟机查看,然后重起此虚拟机...,结果就启动不了。...报错如下图: “没有更多空间可供虚拟磁盘“***.vmdk”使用,也许可以通过释放相关卷上的磁盘空间并单击“重试”继续此会话,单击“取消”可终止此会话。 ?...问题分析: 查看共享存储的剩余空间仅剩下32G可用,而此服务器的swap空间也是32G, 可推断:出现故障时,共享磁盘的空间已经全部用完,服务器在调用swap空间时,出现资源分配紊乱,导致该服务器处于非活动状态...,关机后,swap空间释放,再开机时,VMware判断没有足够的空间可分配,启动失败。
官方网址:http://www.gnu.org/software/screen/ GUN Screen: image.png 在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存...screen重要性 screen的重要性,主要是体现在它可以方便的在服务器上一直运行,只要服务器没有宕机,没有断电它就可以做到不用停止。...其实后端工程师经常会遇到,要通过执行脚本处理一些数据,但这个脚本可能需要执行半天或者几天,screen就是最佳选择了,过一段时间登录到服务器上查看下运行状态,是否运行完成。没有完成挂起来继续运行。...断开某个会话 D 与-d命令相同,但是会logout原来在screen里的用户 在每个screen 会话下,所有命令都以 ctrl+a开始的 参数 说明 ctrl+a d detach会话,将目前的...screen -S test [detached from 3934.test] exit 退出登录,等一段时间然后再登录上去,查看下脚本是否还在执行 ssh screen -ls There are
16.2.2 运行多个后台作业 同时启动多个后台作业就可以了。 在终端会话中使用后台进程要注意,ps命令的输出中,每一个后台进程都和终端会话(pts/0)终端联系在一起。...如果终端会话退出,那么后台进程也会退出。 16.3 在非控制台下运行脚本 需求:在终端启动脚本,让脚本一直运行到结束,即使退出了终端会话。 nohup命令可以做到。...16.4 作业控制 重启停止的进程需要向其发送一个SIGCONT信号。 启动、停止、终止、恢复作业这些功能统称为作业控制 16.4.1 查看作业 jobs命令允许查看shell当前正在处理的作业。...调度优先级是内核分配给进程的CPU时间。 在linux系统中,由shell启动的所有进程的调度优先级默认都是相同的, 调度优先级是个整数值(-20 -- +19)。...如果没有关联电子邮件就无法获得输出,所以最好在脚本中对STDERR和STDOUT进行重定向 at的-M选项用来屏蔽作业产生的输出信息。 例子:就是重定向的例子。这里不写了。 3.
获得一个进程所在的进程组ID用getpgid(pid)。 作业:是一个进程组,作业分为前台作业(前台进程组),后台作业(后台进程组) 会话:会话是若干进程组的集合。...会话有一个前台进程组和多个后台进程组。对于一个打开的控制终端,会话 开始于用户登录,终止于用户退出。...守护进程没有控制终端通常源于它们由系统初始化脚本启动,然而守护进程也可能从某个终端由用户在shell提示符下键入命令行启动,这样的守护进程必须亲自脱离于控制终端的关联,从而避免与作业的控制、终端会话管理...该函数返回时,父进程实际上是上一次调用fork产生的子进程。然后这个父进程被终止,留下新的子进程继续运行。...: 常用的Linux进程分析命令: 查看正在运行的进程:ps -ef 查看当前的所有进程:ps axj 查看占用端口的进程:lsof -i:8086 查看用户username的进程所打开的文件
我们经常会碰到这样的问题,用ssh登录了远程的Linux服务器,运行了一些耗时较长的任务,结果却由于网络等的不稳定导致任务中途失败。...将当前正在前台运行的进程放到后台运行: 先敲下快捷键:ctrl +z //暂停当前正在运行的进程。...再执行:bg 终止当前正在前台运行的进程: 直接敲下快捷键:ctrl +c 5.disown 亡羊补牢,为没有使用nohup与setsid的进程加上忽略HUP信号的功能。...6.通过screen来实现稳定的后台运行 screen是建立一个新的全屏虚拟会话终端,这个会话只有在手动输入exit的时候才会退出,在这个会话里执行的命令不用担心HUP信号会对我们的进程 造成影响,因此也不用给每个命令前都加上...ctrl +ad //输入快捷键ctrl +a和d,可暂时退出当前会话。 exit //进入指定会话后执行exit即可关闭该会话。
使用nohup命令 nohup命令可以将程序置于后台运行,并在用户退出后继续运行。它会忽略所有的SIGHUP信号,从而防止程序因用户注销而终止。 sh nohup ..../my_script.sh > my_script.log 2>&1 & 使用disown命令 disown命令可以将一个已经在后台运行的作业从当前的Shell作业列表中移除,这样在用户退出时,该作业也不会被发送.../my_script.sh & 使用tmux或screen工具 tmux和screen是两个流行的终端复用工具,它们可以创建一个持久的会话,在会话中运行的程序不会因为用户退出而终止。...首先,确保atd守护进程正在运行: sh sudo systemctl start atd 然后,使用at命令调度任务: sh echo "....它的主要优点包括: 会话管理:tmux 可以创建、分离和重新连接会话,使得程序可以在不同的会话中独立运行而不会因为终端关闭而中断。
由进程创建的所有线程都有相同的线程组ID(TGID)。线程有自己的 PID,它的TGID 就是进程的主线程的 PID。如果进程没有使用线程,则其 PID 和 TGID 相同。...在子进程退出且父进程完成回收前,子进程变成僵尸进程。僵尸进程持续的时间通常比较短,在父进程回收它的资源后就会消亡。如果父进程没有处理子进程的终止,那么子进程就会一直处于僵尸状态。...会话是用户登录系统到退出的所有活动,从登录到结束前创建的所有进程都属于这次会话。登录后第一个被创建的进程(通常是 shell),被称为 会话 leader。 进程组用于作业控制。...一个终端上可以启动多个作业,也就是进程组,并能控制哪个作业在前台,前台作业可以访问终端,哪些作业运行在后台,不能读写终端。 我们来看一个会话和进程组的例子。...当终端关闭时,会向整个会话发送 SIGHUP 信号,通常情况下,这个会话的所有进程都会被终止。
领取专属 10元无门槛券
手把手带您无忧上云