Eu desconectaria o comando de seus fluxos padrão de entrada / saída e erro:
nohup python3 -u <script> </dev/null >/dev/null 2>&1 &
ssh
precisa de um indicador que não tenha mais saída e que não precise de mais entradas. Tendo alguma outra coisa sendo a entrada e redirecionando os meios de saída ssh
pode sair com segurança, como entrada / saída não está vindo ou indo para o terminal. Isso significa que a entrada deve vir de algum outro lugar, e a saída (STDOUT e STDERR) deve ir para outro lugar.
A parte </dev/null
especifica /dev/null
como entrada para <script>
. Por que isso é útil aqui:
Redirecting /dev/null to stdin will give an immediate EOF to any read call from that process. This is typically useful to detach a process from a tty (such a process is called a daemon). For example, when starting a background process remotely over ssh, you must redirect stdin to prevent the process waiting for local input. https://stackoverflow.com/questions/19955260/what-is-dev-null-in-bash/19955475#19955475
Como alternativa, o redirecionamento de outra fonte de entrada deve ser relativamente seguro, contanto que a sessão ssh
atual não precise ser mantida aberta.
Com a parte >/dev/null
, o shell redireciona a saída padrão para / dev / null essencialmente descartando-a. >/path/to/file
também funcionará.
A última parte 2>&1
está redirecionando STDERR para STDOUT.
There are three standard sources of input and output for a program. Standard input usually comes from the keyboard if it’s an interactive program, or from another program if it’s processing the other program’s output. The program usually prints to standard output, and sometimes prints to standard error. These three file descriptors (you can think of them as “data pipes”) are often called STDIN, STDOUT, and STDERR.
Sometimes they’re not named, they’re numbered! The built-in numberings for them are 0, 1, and 2, in that order. By default, if you don’t name or number one explicitly, you’re talking about STDOUT.
Given that context, you can see the command above is redirecting standard output into /dev/null, which is a place you can dump anything you don’t want (often called the bit-bucket), then redirecting standard error into standard output (you have to put an & in front of the destination when you do this).
The short explanation, therefore, is “all output from this command should be shoved into a black hole.” That’s one good way to make a program be really quiet!
What does > /dev/null 2>&1 mean? | Xaprb