要将stdout重定向到Bash中的截断文件,我知道要使用:
cmd > file.txt
Run Code Online (Sandbox Code Playgroud)
要在Bash中重定向stdout,追加到文件,我知道要使用:
cmd >> file.txt
Run Code Online (Sandbox Code Playgroud)
要将stdout和stderr重定向到截断的文件,我知道要使用:
cmd &> file.txt
Run Code Online (Sandbox Code Playgroud)
如何重定向附加到文件的stdout和stderr?cmd &>> file.txt不适合我.
我试图在一个调用shell脚本的docker容器中运行一个cronjob.
昨天我一直在网上搜索和堆栈溢出,但我真的找不到一个有效的解决方案.
我怎样才能做到这一点?
编辑:
我创建了一个(注释的)github存储库,其中包含一个工作的docker cron容器,它以给定的时间间隔调用shell脚本.
我想知道如何确切地看到cron作业在每次执行时都在做什么.日志文件位于何处?或者我可以将输出发送到我的电子邮件吗?我已经设置了电子邮件地址,以便在cron作业运行时发送日志,但我还没有收到任何信息.
我在/etc/cron.daily/apf中找到了这段代码
#!/bin/bash
/etc/apf/apf -f >> /dev/null 2>&1
/etc/apf/apf -s >> /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
它正在刷新并重新加载防火墙.
我不明白这一>> /dev/null 2>&1部分.
在cron中有这个的目的是什么?它覆盖了我的防火墙规则.我可以安全地删除这个cron作业吗?
我正在编写一个PHP脚本,用于检查Linux shell命令的网络连接,ping并使用PHP调用它exec():
<?php
// Bad IP domain for testing.
$domain_bad = "lksjdflksjdf.com";
$ip_address = $domain_bad;
exec("ping -c 1 $domain_bad", $output, $return_var);
var_dump($return_var);
echo "return_var is: $return_var" . "\n";
var_dump($output);
exit;
?>
Run Code Online (Sandbox Code Playgroud)
我没有从ping获取错误消息的输出,$output这是我所期待的:
$ php try.php
ping: unknown host lksjdflksjdf.com
int(2)
return_var is: 2
array(0) {
}
Run Code Online (Sandbox Code Playgroud)
如果域是一个好的域,例如yahoo.com,那么$output在数组中有ping的输出.但如果它是一个错误,例如'ping: unknown host lksjdflksjdf.com'它没有返回到$output数组.
为什么会发生这种情况并且有更好的方法来做到这一点?
我正在查看预提交钩子,并发现了以下行,因为我想知道为什么我1在提交后总是在我的目录中调用一个empy文件.
git status 2&>1 > /dev/null
Run Code Online (Sandbox Code Playgroud)
我认为其目的是写下以下内容,并对其进行了更正.
git status 2>&1 > /dev/null
Run Code Online (Sandbox Code Playgroud)
但是,我很好奇下面的语法完全是什么,所以我查看了手册页.
git status 2&>1
Run Code Online (Sandbox Code Playgroud)
这是手册页.
Redirecting Standard Output and Standard Error
This construct allows both the standard output (file descriptor 1) and
the standard error output (file descriptor 2) to be redirected to the
file whose name is the expansion of word.
There are two formats for redirecting standard output and standard
error:
&>word
and
>&word
Of the two forms, the first is preferred. This is …Run Code Online (Sandbox Code Playgroud) 我知道这个语法
var=`myscript.sh`
Run Code Online (Sandbox Code Playgroud)
要么
var=$(myscript.sh)
Run Code Online (Sandbox Code Playgroud)
将捕获结果(stdout)myscript.sh转化为var.我可以重定向stderr到stdout,如果我想同时捕获.如何将它们中的每一个保存为单独的变量?
我在这里的用例是如果返回代码非零,我想要回显stderr并禁止其他方式.可能有其他方法可以做到这一点,但这种方法似乎可行,如果它实际上是可能的.
快速的,2>&1将stderr重定向到stdout,但是&符号是什么意思?我知道如果我们将2 > 1它输出到一个名为的文件1,那么&符号会做什么?
在bash/ksh中我们可以为STDERR重定向添加时间戳吗?
例如myscript.sh 2> error.log
我想在日志上写一个时间戳.
我有以下脚本:
if( $timeout -ne $null )
{
& $var$timeout 2>&1 > $logDir\$logName
}
else
{
& $var2>&1 > $logDir\$logName
}
Run Code Online (Sandbox Code Playgroud)
我很好奇是什么2>&1; 或者,它代表什么.我不知道它叫什么,否则,我会查一查.