标签: bash

如何从 cron 中将输出重定向到文件?

我有一个备份脚本,我需要在一天的特定时间运行它,所以我正在使用cron这个任务,并且从 cron 中我也试图将备份脚本的输出重定向到logfile.

crontab -e

*/1 * * * * /home/ranveer/backup.sh &>> /home/ranveer/backup.log
Run Code Online (Sandbox Code Playgroud)

在上面的 cron 条目中,我将两者都重定向stderr and stdout到日志文件。

上面的 cron 作业执行得很好syslog ,它执行backup.sh文件中提到的任务,但它没有向日志文件写入任何内容。

/var/log/syslog

Oct 19 20:26:01 ranveer CRON[15214]: (ranveer) CMD (/home/ranveer/backup.sh &>> /home/ranveer/backup.log)
Run Code Online (Sandbox Code Playgroud)

当我从 cli 运行脚本时,它会按要求工作并将输出写入日志文件

ranveer@ranveer:~$ ./backup.sh &>> backup.log 
ranveer@ranveer:~$ cat backup.log
Fri Oct 19 20:28:01 IST 2012
successfully copied testdir
test.txt successfully copied
-------------------------------------------------------------------------------------
ranveer@ranveer:~$ 
Run Code Online (Sandbox Code Playgroud)

那么,为什么文件的输出没有从 cron 中重定向到文件。

bash cron io-redirection

150
推荐指数
2
解决办法
31万
查看次数

“sort -u”和“sort | uniq”有什么区别?

我在任何地方看到有人需要获得一个排序的、唯一的列表,他们总是通过管道传输到sort | uniq. 我从未见过有人使用的例子sort -u。为什么不?有什么区别,为什么使用 uniq 比使用 unique 标志进行排序更好?

bash sort uniq

149
推荐指数
5
解决办法
22万
查看次数

不能在 bash 中使用感叹号 (!)?

我正在尝试使用 curl 命令访问!路径中带有感叹号 ( )的 http url 。例如:

curl -v "http://example.org/!287s87asdjh2/somepath/someresource"
Run Code Online (Sandbox Code Playgroud)

控制台回复bash: ... event not found.

这里发生了什么?逃避感叹号的正确语法是什么?

bash special-characters quoting

148
推荐指数
6
解决办法
13万
查看次数

如何使用 shell 命令删除 ascii 文件的前 n 行?

我有多个文件在前 5-10 行中包含 ascii 文本信息,然后是列表良好的矩阵信息。在 shell 脚本中,我想删除前几行文本,以便我可以在另一个程序中使用纯矩阵信息。如何使用 bash shell 命令来执行此操作?

如果有任何帮助,我正在使用 RedHat 和 Ubuntu linux 系统。

bash shell-script text-processing

147
推荐指数
4
解决办法
33万
查看次数

什么时候需要双引号?

过去的旧建议是对任何涉及 a 的表达式加双引号$VARIABLE,至少在希望 shell 将其解释为单个项目的情况下,否则,内容中的任何空格$VARIABLE都会脱离 shell。

但是,我知道在较新版本的 shell 中,不再总是需要双引号(至少出于上述目的)。例如,在bash

% FOO='bar baz'
% [ $FOO = 'bar baz' ] && echo OK
bash: [: too many arguments
% [[ $FOO = 'bar baz' ]] && echo OK
OK
% touch 'bar baz'
% ls $FOO
ls: cannot access bar: No such file or directory
ls: cannot access baz: No such file or directory
Run Code Online (Sandbox Code Playgroud)

zsh,而另一方面,同样的三个命令成功。因此,基于此实验,似乎在 中bash可以省略 内部的双引号[[ ... ]],但不能省略内部 …

shell bash zsh shell-script quoting

147
推荐指数
1
解决办法
6万
查看次数

如何在远程机器上执行本地脚本并包含参数?

我编写了一个在本地执行时运行良好的脚本:

./sysMole -time Aug 18 18
Run Code Online (Sandbox Code Playgroud)

参数"-time""Aug""18""18"成功传递给脚本。

现在,这个脚本被设计为在远程机器上执行,但是从本地机器上的本地目录执行。例子:

ssh root@remoteServer "bash -s" < /var/www/html/ops1/sysMole
Run Code Online (Sandbox Code Playgroud)

这也很好用。但是当我尝试包含上述参数(-time Aug 18 18) 时,问题就出现了,例如:

ssh root@remoteServer "bash -s" < /var/www/html/ops1/sysMole -time Aug 18 18
Run Code Online (Sandbox Code Playgroud)

运行该脚本后,我收到以下错误:

bash: cannot set terminal process group (-1): Invalid argument
bash: no job control in this shell
Run Code Online (Sandbox Code Playgroud)

请告诉我我做错了什么,这非常令人沮丧。

shell scripting bash options shell-script

145
推荐指数
2
解决办法
26万
查看次数

如何使用 bash 添加(减去等)两个数字?

我可以读取数字和操作:

echo "First number please"
read num1
echo "Second number please"
read num2
echo "Operation?"
read op
Run Code Online (Sandbox Code Playgroud)

但随后我所有添加数字的尝试都失败了:

case "$op" in
  "+")
    echo num1+num2;;
  "-")
    echo `num1-num2`;;
esac
Run Code Online (Sandbox Code Playgroud)

跑:

First number please
1
Second mumber please
2
Operation?
+
Run Code Online (Sandbox Code Playgroud)

输出:

num1+num2
Run Code Online (Sandbox Code Playgroud)

...或者...

echo $num1+$num2;;

# results in: 1+2    
Run Code Online (Sandbox Code Playgroud)

...或者...

echo `$num1`+`$num2`;;

# results in: ...line 9: 1: command not found
Run Code Online (Sandbox Code Playgroud)

当我尝试添加添加(“2+2”而不是“4”)时,似乎我仍然得到字符串。

scripting bash variable

143
推荐指数
4
解决办法
37万
查看次数

*sh shell 中的反引号(即`cmd`)是否已被弃用?

我在 Unix 和 Linux 以及其他使用短语“反引号已被弃用”的站点上多次看到此评论,这与 Bash 和 Zsh 等 shell 相关。

这个说法是真的还是假的?

shell scripting bash zsh shell-script

141
推荐指数
2
解决办法
3万
查看次数

如何在查找中组合 2 -name 条件?

我想搜索不符合 2 个-name条件的文件。我可以这样做:

find /media/d/ -type f -size +50M ! -name "*deb" ! -name "*vmdk"
Run Code Online (Sandbox Code Playgroud)

这将产生正确的结果,但我可以用 OR 以某种方式加入这两个条件吗?

shell bash find

139
推荐指数
4
解决办法
15万
查看次数

如何从文件中导出变量?

我有一个tmp.txt包含要导出的变量的文件,例如:

a=123
b="hello world"
c="one more variable"
Run Code Online (Sandbox Code Playgroud)

如何使用export命令导出所有这些变量,以便子进程以后可以使用它们?

bash

138
推荐指数
4
解决办法
14万
查看次数