zoukankan      html  css  js  c++  java
  • Unix或Linux中&、jobs、fg、bg等命令的使用方法

    [From] http://blog.sina.com.cn/nenutechnology 


    fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的
    一.& 最经常被用到
    这个用在一个命令的最后,可以把这个命令放到后台执行
    二.ctrl + z
    可以将一个正在前台执行的命令放到后台,并且暂停
    三.jobs
    查看当前有多少在后台运行的命令
    四.fg
    将后台中的命令调至前台继续运行
    如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
    五.bg
    将一个在后台暂停的命令,变成继续执行
    如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
    Linux下使用Shell命令控制任务Jobs执行
    下列命令可以用来操纵进程任务:
    ps 列出系统中正在运行的进程;
    kill 发送信号给一个或多个进程(经常用来杀死一个进程);
    jobs 列出当前shell环境中已启动的任务状态,若未指定jobsid,则显示所有活动的任务状态信息;如果报告了一个任务的终止(即任务的状态被标记为Terminated),shell 从当前的shell环境已知的列表中删除任务的进程标识;
    bg 将进程搬到后台运行(Background);
      fg 将进程搬到前台运行(Foreground);
      将job转移到后台运行
      如果你经常在X图形下工作,你可能有这样的经历:通过终端命令运行一个GUI程序,GUI界面出来了,但是你的终端还停留在原地,你不能在shell中继续执行其他命令了,除非将GUI程序关掉。
      为了使程序执行后终端还能继续接受命令,你可以将进程移到后台运行,使用如下命令运行程序: #假设要运行xmms
      $xmms &
      这样打开xmms后,终端的提示又回来了。现在xmms在后台运行着呢;但万一你运行程序时忘记使用“&”了,又不想重新执行;你可以先使用ctrl+z挂起程序,然后敲入bg命令,这样程序就在后台继续运行了。
      概念:当前任务
      如果后台的任务号有2个,[1],[2];如果当第一个后台任务顺利执行完毕,第二个后台任务还在执行中时,当前任务便会自动变成后台任务号码“[2]”的后台任务。所以可以得出一点,即当前任务是会变动的。当用户输入“fg”、“bg”和“stop”等命令时,如果不加任何引号,则所变动的均是当前任务。
      察看jobs
      使用jobs或ps命令可以察看正在执行的jobs。
      jobs命令执行的结果,+表示是一个当前的作业,减号表是是一个当前作业之后的一个作业,jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated,但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息;
      进程的挂起
      后台进程的挂起:
      在solaris中通过stop命令执行,通过jobs命令查看job号(假设为num),然后执行stop %num;
      在redhat中,不存在stop命令,可通过执行命令kill -stop PID,将进程挂起;
      当要重新执行当前被挂起的任务时,通过bg %num 即可将挂起的job的状态由stopped改为running,仍在后台执行;当需要改为在前台执行时,执行命令fg %num即可;
      前台进程的挂起:
      ctrl+Z;
      进程的终止
      后台进程的终止:
      方法一:
      通过jobs命令查看job号(假设为num),然后执行kill %num
      方法二:
      通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid
      前台进程的终止:
      ctrl+c
      kill的其他作用
      kill除了可以终止进程,还能给进程发送其它信号,使用kill -l 可以察看kill支持的信号。
      SIGTERM是不带参数时kill发送的信号,意思是要进程终止运行,但执行与否还得看进程是否支持。如果进程还没有终止,可以使用kill -SIGKILL pid,这是由内核来终止进程,进程不能监听这个信号。

  • 相关阅读:
    软件体系架构复习要点
    Operating System on Raspberry Pi 3b
    2019-2020 ICPC North-Western Russia Regional Contest
    2019 ICPC ShenYang Regional Online Contest
    2019 ICPC XuZhou Regional Online Contest
    2019 ICPC NanChang Regional Online Contest
    2019 ICPC NanJing Regional Online Contest
    Codeforces Edu Round 72 (Rated for Div. 2)
    Codeforces Round #583 (Div.1+Div.2)
    AtCoder Beginning Contest 139
  • 原文地址:https://www.cnblogs.com/pekkle/p/6568673.html
Copyright © 2011-2022 走看看