在Unix shell中,如果我想要组合stderr并stdout进入stdout流进行进一步操作,我可以在命令的末尾添加以下内容:
2>&1
所以,如果我想head在输出上使用g++,我可以这样做:
g++ lots_of_errors 2>&1 | head
所以我只能看到前几个错误.
我总是很难记住这一点,而且我不得不去查阅它,主要是因为我不完全理解这个特殊技巧的语法.
有人可以打破这个并按字符解释具体2>&1  意义吗?
我的python脚本没有在我的crontab下运行.
我把它放在顶部的python脚本中: 
    crontab -e
我试过这样做: 
    myscript.py
添加到我的crontab -e: 
#!/usr/bin/python
我的/ var/log/cron文件说: 
/usr/bin/python
但是我的脚本没有运行,因为当我检查我的sql数据库时,没有任何改变.如果我直接在终端中运行它,如下所示:
/home/me/project/myscript.py
我得到了正确的结果.
这是myscript.py:
chmod a+x myscript.py
编辑:每条评论:是的,/usr/bin/python /home/me/project/myscript.py存在.我也可以使用just直接运行python脚本crontab -e.myscript.py作品.所以我不相信这是原因?
我写了一段代码,将.trc文件从源指令移到备份指令。现在,我已将时间(更旧了多少时间),源路径和备份路径用作此文件的命令行参数。现在,当我从中调用脚本时sh,它可以正常工作。但是在crontab中它不起作用,这让我想知道crontab是否允许传递命令行参数。我的sh命令是:
sh trace_bkp.sh 2 /home/adhikarisubir/test/basic_unix /home/adhikarisubir/test_bkp
其中2定义了2分钟的旧文件,下一个是资源路径,最后一个是目标路径。我在crontab中设置为:
*/5 * * * * sh /home/adhikarisubir/test/basic_unix/trace_bkp.sh 2 /home/adhikarisubir/test/basic_unix /home/adhikarisubir/test_bkp
我无法让我的cron作业执行.
建立:
Django - 1.9
Elastic beanstalk - 运行Python 3.4的64位Amazon Linux 2016.03 v2.1.3
到目前为止,我已尝试过几种方法:
使用cron.yaml文件:没有碰到其他任何东西 - 只是将cron.yaml文件添加到我的项目根文件夹
version: 1
cron:
  - name: "test"
url: "http://website.com/workers/test"
schedule: "*/10 * * * *"
使用容器命令和单独的cron.txt文件:
在我的.ebextensions/development.config文件中添加了这一行
05_some_cron:
    command: "cat .ebextensions/crontab.txt > /etc/cron.d/crontab && chmod 644 /etc/cron.d/crontab"
    leader_only: true
在.ebextensions/crontab.txt中
*/10 * * * * source /opt/python/run/venv/bin/activate && python mysite/manage.py test
该应用程序在两种情况下都能成功部署.
source /opt/python/run/venv/bin/activate && python mysite/manage.py test为管理命令会在部署时运行一次正确的脚本.日志不会在该URL上显示任何GETS.
我究竟做错了什么?我是否错过了流程的一些步骤或EBS上的一些设置步骤?
另外,为EBS托管的django应用程序运行cron作业的最佳方法是什么? - django apps可以在命令行中运行管理命令,如尝试2中所示,也可以通过扩展GET或POST URL来进行尝试1.
我正在尝试安排 htcacheclean 使用 cron 每半小时运行一次。服务本身运行良好,但我不知道如何获取时间戳以附加到日志条目本身(而不是 cron-log 文件名)。
我无法在任何地方找到关于如何将时间戳添加到日志条目本身的答案。我只不断看到有关如何将日期时间戳添加到 cron 日志文件名的问题和答案,这不是我想要做的。
crontab -e这就是我现在所拥有的:
0,30  *   *   *   *       /usr/sbin/htcacheclean -v -n -t -p/var/cache/apache/mod_disk_cache -l1M >> /path/to/cron-output.log 2>&1
目前,这就是我的输出打印方式:
Statistics:
size limit 1.0M
total size was 167.4K, total size now 167.4K
total entries was 5, total entries now 5
现在我只需要一个时间戳出现在“统计”之前的日志条目旁边。
编辑:
我正在尝试做的示例:
0000-00-00 00:00:00: Statistics:
size limit 1.0M
total size was 167.4K, total size now 167.4K
total entries was 5, total entries now 5
我想添加年、月、日、时、分、秒。
提前致谢!
解决方案:
我想按照@glenn jackman 的建议在这里添加完整的解决方案。
0,30 …我想将 cron 输出记录到一个过时的文件中—— /tmp/log/cron-2014-12-17.log
$ mkdir /tmp/log
$ chmod 777 /tmp/log
$ ls -lah /tmp/log
drwxrwxrwx 2 root root 4.0K Dec 17 21:51 .
Cron(通过root用户)
* * * * * /usr/bin/php /path/to/script.php > /tmp/log/cron-$(date "+%F").log 2>&1
/tmp/log 每分钟后保持为空。
如果我从命令行手动运行脚本,则会创建一个日志文件,并且输出符合预期。
// Running it manually as a CLI works fine, but not as a cron
$ /usr/bin/php /path/to/script.php > /tmp/log/cron-$(date "+%F").log 2>&1
此外,如果我创建一个文件并 chmod 777 它,cron会将输出写入这个创建的文件。它只是不会即时创建一个。
// Let's create it first
$ touch /tmp/log/cron.log
$ chmod 777 /tmp/log/cron.log …