• Linux中后台执行任务


    执行时, 可以在命令最后添加 & 使其后台执行, 但是其输出依然会显示, 而且其运行是和当前shell绑定的

    如果脚本已经运行,  可以使用Ctrl-Z暂停, 然后使用 bg 让其转入后台, 再 disown 解除关联, 例如:

    ^Z
    [1]+  Stopped                 make -j2
    [tomcat@n00 master]$ bg
    [1]+ make -j2 &
    # 注意: disown之后, 此任务将不出现于jobs, 也不能再转回前台, 但是输出依然是和当前shell绑定的 [tomcat@n00 master]$ disown [tomcat@n00 master]$ exit

    查看在后台运行的任务

    jobs -l
    # -l: 用于显示任务的 process id

    将后台任务转回前台

    %process-id
    # or
    fg process-id

    如果要在屏显的同时记录日志, 通过tee命令

    $ make -j2 | tee output.log

    对于需要在关闭shell后还需要继续执行的任务, 需要使用nohup, 例如

    nohup make -j1 TARGET_DEVICES=y1 > ~/openwrt/logs/20170115.log 2>&1 &
    # 其中执行的命令是"make -j1 TARGET_DEVICES=y1"

    上面的命令会将输入记录到log文件.  对于上面的命令的解释:

    bash 中 0, 1, 2 三个数字分别代表 STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO, 即标准输入(一般是键盘), 标准输出(一般是用户终端控制台), 标准错误(出错信息输出)

    0 标准输入 (一般是键盘)
    1 标准输出 (一般是用户终端控制台)
    2 标准错误 (出错信息输出)

    输入重定向, 例如 cat < test.c 将 test.c 重定向为 cat 命令的输入源.

    输出重定向, 用其他输出目标替换标准输出, 例如 ls > 1.txt 将 ls 的结果从标准输出重定向为 1.txt 文本. 有时候会看到如 ls >> 1.txt这类的写法, >> 的区别在于 > 用于新建而 >> 用于追加, 即 ls > 1.txt 会新建一个 1.txt 文件并且将 ls 的内容输出到新建的 1.txt 中, 而 ls >> 1.txt 则用在 1.txt 已经存在而我们只是想将 ls 的内容追加到 1.txt 文本中的时候

  • 相关阅读:
    java wait 与 notify sleep
    java线程安全总结
    ubuntu安装遇到的问题
    python时间处理函数
    js获取当前时间
    sql如何将同个字段不同值打印在一行
    django models数据类型
    django上传图片和文字记录
    django form使用学习记录
    django中request对象详解(转载)
  • 原文地址:https://www.cnblogs.com/milton/p/6287040.html
Copyright © 2020-2023  润新知