zoukankan      html  css  js  c++  java
  • Using nohup for existing processes (ZT)

    http://solaris.reys.net/using-nohup-for-existing-processes/

    Most of you are probably aware with the fact that by default any processes you may have running within your session will be killed once you terminate the session. The most common example is logging onto a remote server via SSH, starting some command and then closing the terminal session.

    As you know, this happens because when your’e terminating your shell it ends up sending the SIGHUP signal to all the child processes, notifying them about the end of the session and therefore instructing them to wrap up whatever it was they were doing and to terminate.

    Many are also aware of the wonderful nohup command which adds flexibility to start any command in a mode where it will ignore the SIGHUP and therefore stay running (and writing output to log files, for example) even after your terminal session completes.

    Basic usage of the nohup command

    Here’s how you should use it:

    $ nohup ./massive-job.sh &
    Sending output to nohup.out
    [1] 3763

    What this does is put your massive-job.sh script into background while making it ignore SIGHUP signals in the past. The background element is not necessary but very common because if you expect something to be running for hours/days – you probably don’t want to be watching it in your terminal anyway. So you put the task into background.

    The [1] indicates that this is the first (and only) job you’re running in background so far. The 3763 is the process ID (PID) of the massive-job.sh script.

    Output redirection into nohup.out

    nohup command redirects all the standard input into nohup.out file so if you’re interested in your script’s output you can still keep an eye on it this way:

    tail -f nohup.out
    nohup for an existing process

    In recent versions of Solaris 10 the nohup command has seen a really welcomed addition: it now allows you to make any process (within your privileges of course) ignore SIGHUP signal. This is really convenient because if you started some script in the morning and by late afternoon it’s obvious that it won’t finish by the time you should be heading home – you can now simply use nohup command to update the process and allow it to finish even when you log out.

    Another reason it’s so convenient is because prior to this feature the scenario described above would leave you no option but to keep your session open. If you couldn’t (for example you must disconnect your laptop every evening) – you had to stop the script and restart next morning (with nohup this time).

    Here’s how you update an existing process:

    -bash-4.1# nohup -p 3468
    Sending output to nohup.out

    or get a message suggesting you must elevate your privileges before you can do it:

    greys@solaris:~$ nohup -p 3468
    nohup: cannot examine 3468: permission denied
  • 相关阅读:
    点滴线程(笔记)
    解决问题的思维方式之Problem->Desgin->Solution(笔记)
    阿朱分享:中国互联网十五年的22个创新模式(转)
    .NET JSON对象序列化和反序列化
    Centos防火墙设置
    跨平台的 NodeJS 组件解决 .NetCore 不支持 System.Drawing图形功能的若干问题
    Mysql 多行转一行
    redis中的缓存穿透 缓存击穿 缓存雪崩
    redis持久化
    redis事物
  • 原文地址:https://www.cnblogs.com/cqubityj/p/3067151.html
Copyright © 2011-2022 走看看