- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 nohup 命令有问题。
当我运行我的工作时,我有很多数据。输出 nohup.out 变得太大,我的进程变慢了。如何在不获取 nohup.out 的情况下运行此命令?
最佳答案
nohup
命令仅写入 nohup.out
如果输出否则会进入终端。如果您已将命令的输出重定向到其他地方 - 包括 /dev/null
- 那就是它去的地方。
nohup command >/dev/null 2>&1 # doesn't create nohup.out
nohup
,这可能意味着您想通过放置另一个
&
在后台运行该命令在整个事情的结尾:
nohup command >/dev/null 2>&1 & # runs in background, still doesn't create nohup.out
nohup
运行作业也会自动关闭其输入。在其他系统上,特别是 BSD 和 macOS,情况并非如此,因此在后台运行时,您可能需要手动关闭输入。而关闭输入对
nohup.out
的创建与否没有影响。 ,它避免了另一个问题:如果后台进程试图从标准输入读取任何内容,它将暂停,等待您将其带回前台并键入一些内容。所以额外安全的版本看起来像这样:
nohup command </dev/null >/dev/null 2>&1 & # completely detached from terminal
disown
来实现。没有参数作为下一个命令。这意味着后台进程不再与 shell “作业”相关联,并且不会从 shell 向它转发任何信号。 (注意区别:一个
disown
ed 进程不会得到其父 shell 自动转发给它的信号 - 但如果没有
nohup
,它仍然会收到通过其他方式发送的
HUP
信号,例如手动
kill
命令。一个
nohup
'ed 进程忽略任何和所有
HUP
信号,无论它们是如何发送的。)
<
、
<<
、
>
、
>>
)和管道(
|
)运算符所做的。
command1 | command2
安排
command1
的标准输出直接输入到
command2
的标准输入中.这是一个非常方便的安排,导致了 UNIX 工具中的特定设计模式(并解释了标准错误的存在,它允许程序向用户发送消息,即使其输出正在进入管道中的下一个程序) .但是您只能通过管道将标准输出传输到标准输入;你不能在没有一些杂耍的情况下将任何其他文件描述符发送到管道。
0<infile
从名为
infile
的文件中读取标准输入, 而
2>>logfile
将标准错误附加到名为
logfile
的文件的末尾.如果不指定数字,则输入重定向默认为 fd 0(
<
与
0<
相同),而输出重定向默认为 fd 1 (
>
与
1>
相同)。
2>&1
意思是“在标准输出的任何地方发送标准错误”。这意味着您会得到一个单一的输出流,其中包含标准输出和标准错误混合在一起,无法再将它们分开,但这也意味着您可以在管道中包含标准错误。
>/dev/null 2>&1
表示“将标准输出发送到
/dev/null
”(这是一种特殊的设备,它只会丢弃您写入的任何内容)“然后将标准错误发送到标准输出的任何地方”(我们刚刚确定是
/dev/null
) .基本上,“丢弃此命令写入任一文件描述符的任何内容”。
nohup
检测到它的标准错误和输出都没有附加到终端,它不会费心创建
nohup.out
,但假设输出已经重定向到用户希望它去的地方。
/dev/null
设备也适用于输入;如果您使用
</dev/null
运行命令,那么该命令从标准输入读取的任何尝试都会立即遇到文件结尾。请注意,合并语法在这里不会产生相同的效果;它只能将文件描述符指向另一个在同一方向(输入或输出)打开的文件描述符。 shell 会让你做
>/dev/null <&1
,但这最终会创建一个在输出流上打开输入文件描述符的进程,因此任何读取尝试都将触发致命的“无效文件描述符”错误,而不是仅仅点击文件结尾。
关于unix - 如何在不获取 nohup.out 的情况下使用 nohup 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10408816/
我正在尝试在后台运行长时间运行的任务,而无需登录并让终端返回提示,但是当我这样做时,该任务似乎进入了后台,但是除非我输入提示,否则我的提示将不可用点击控制键+ c。我想运行任务,然后重新获得提示。 [
我做了以下事情: nohup find / & rm nohup.out 奇怪的是,nohup 命令继续运行。我等待创建新文件。令我惊讶的是没有这样的文件。命令的标准输出去了哪里? 最佳答案 在 UN
我不知道我是否可以用 nohup 做到这一点,但这是个问题....我有这个命令: nohup java -XX:MaxHeapFreeRatio=70 -Xmx2048M -XX:+HeapDumpO
我无法理解仅使用 nohup 运行脚本与使用 nohup 和“&”之间的区别。我理解,对于后者,如果我想杀死它,我可以杀死进程id。但是对于前者,我可以直接按“CTRL+C”来杀死脚本吗?所以如果我要
如何使用 nohup 运行命令,以便 stdout 和 stderr 都保存到 nohup.out?默认情况下只保存 stdout 而丢弃 stderr。 最佳答案 试试这个 nohup 2>&1 E
我的 nohup 命令有问题。 当我运行我的工作时,我有很多数据。输出 nohup.out 变得太大,我的进程变慢了。如何在不获取 nohup.out 的情况下运行此命令? 最佳答案 nohup命令仅
我的 FreeBSD 8.4 机器上运行着一个 nohup 进程。最初我正在查看通过 输出的 nohup 控制台消息 tail -f nohup.out 但是我不小心删除了 nohup.out 文件。
所以假设我有一个名为 script1 的脚本,它在代码中的某处调用 script2: ... ./script2 ... 假设我这样运行 script1: nohup ./script1 script
我在尝试编写一个相当简单的 Cap 脚本来停止和启动我在远程机器上运行的一些守护进程时感到非常沮丧。 本质上, run "for I in {1..40}; do nohup python ~/pyd
我正在尝试使用 nohup 运行 ruby 脚本: nohup ruby script.rb & 这需要几个小时才能运行,但会通过 puts 记录其进度。 通常,我可以查看 nohup.out 以
我想通过 nohup.php 启动我的服务器,但是命令没有运行并显示以下错误 nohup:ignoring input and appending output to 'nohup.out' 我正在通
我遇到无法运行 nohup -p 的情况在 Linux RHEL 6.6 框中,它表示不支持此选项。我阅读了联机帮助页,在 Linux 中它只有 --help和 --version作为 Linux
对于一个应用程序,我希望每秒钟访问一个 url。为了在我的 Google Cloud ubuntu 服务器上实现这一点,我运行了这个命令nohup watch -n 1 curl https://ww
我使用以下命令: nohup & 并记录到nohup.out文件中,但是此日志文件可能变得非常大,所以想知道是否存在一种方法,当nohup.out得到时,将输出自动保存到nohup1.out,noh
与使用 nohup 相比,将脚本作为守护进程运行有何影响? 我知道 fork 进程等方面有什么区别,但这对我的脚本有什么影响? 最佳答案 nohup 命令是穷人将进程作为守护进程运行的方式。正如 Br
我正在尝试让 OrientDB(一个数据库)在 Ubuntu 上运行的启动脚本。 目前这是导致问题的行: ORIENTDB_DIR="/usr/local/orientdb" ORIENTDB_USE
我正在使用 nohup 命令运行一个 java 应用程序。 nohup java -jar test.jar 我正在使用 log4j 从我的应用程序中写入输出。在 log4j.properties 文
我的 bashrc 中有一个小函数,因此我可以运行脚本并在完成后将输出发送到我的电子邮件。代码如下: run() { email=example@gmail.com last="${!
我正在尝试 nohup 一个命令并以不同的用户身份运行它,但每次我这样做都会产生两个进程。 例如: $ nohup su -s /bin/bash nobody -c "my_command" > o
我正在使用 nohup 将 java 输出和错误附加到同一个日志文件。问题是它写了一个输出,然后它覆盖错误日志文件,输出被删除。 nohup命令是 nohup java Daemon 1000 >lo
我是一名优秀的程序员,十分优秀!