在Unix shell中,如果我想要组合stderr并stdout进入stdout流进行进一步操作,我可以在命令的末尾添加以下内容:
2>&1
Run Code Online (Sandbox Code Playgroud)
所以,如果我想head在输出上使用g++,我可以这样做:
g++ lots_of_errors 2>&1 | head
Run Code Online (Sandbox Code Playgroud)
所以我只能看到前几个错误.
我总是很难记住这一点,而且我不得不去查阅它,主要是因为我不完全理解这个特殊技巧的语法.
有人可以打破这个并按字符解释具体2>&1 意义吗?
我想知道CR LF(Windows),LF(Unix)和CR(Macintosh)换行符类型之间的差异(如果可能的话,有示例).
我通过输入crontab -e在ubuntu环境中为root用户设置了cronjob
34 11 * * * sh /srv/www/live/CronJobs/daily.sh
0 08 * * 2 sh /srv/www/live/CronJobs/weekly.sh
0 08 1 * * sh /srv/www/live/CronJobs/monthly.sh
Run Code Online (Sandbox Code Playgroud)
但是cronjon不会跑.我已经尝试检查cronjob是否正在运行
pgrep cron
并提供进程ID 3033. shell脚本调用python文件,用于发送电子邮件.运行python文件是可以的.它没有错误,但是cron没有运行.daily.sh文件中包含以下代码.
python /srv/www/live/CronJobs/daily.py
python /srv/www/live/CronJobs/notification_email.py
python /srv/www/live/CronJobs/log_kpi.py
Run Code Online (Sandbox Code Playgroud) 我试图在docker容器中运行一个cron作业
但没有什么对我有用
我的容器只有cron.daily和cron.weekly文件
crontab,cron.d,cron.hourly ......在我的容器中不存在
crontab -e也无法正常工作
我的容器用/ bin/bash运行
如何将具有crlf行返回的单个文件转换为具有lf行返回值?
当我将文件推送到远程存储库时,git已经正确地自动处理文件的crlf到lf转换,但在这种特殊情况下,我没有对存储库进行推送.相反,我正在使用HTML表单上的文件字段将文件上载到需要该文件具有lf行返回的网站.所以我需要能够单独转换这个文件.
我在这台计算机上可用的潜在有用工具是git和Dreamweaver CC 2014.1.(我猜Word,写字板和记事本不是可行的选择,但我很乐意纠正.)
我在Windows 7上并使用git line命令.
使用Docker for Mac 1.13.1和以下Dockerfile:
FROM ubuntu:latest
MAINTAINER docker@ekito.fr
#Install packages and clean downloaded packages in the lowest layer
RUN apt-get update && apt-get -y install cron && rm -rf /var/lib/apt/lists/*
# Add crontab file in the cron directory
ADD crontab /etc/cron.d/hello-cron
# Give execution rights on the cron job and create the log file to tail in the next layer
RUN chmod 0644 /etc/cron.d/hello-cron && touch /var/log/cron.log
# Run the command on container startup
CMD echo "starting" && echo "continuing" …Run Code Online (Sandbox Code Playgroud) 作为序言,我一直在参考这两篇文章寻求帮助:
我的目标是在启动docker容器时自动启动cron作业.目前,它不会自动启动,但我可以手动进入我的容器并运行service cron start,这将启动作业,并且它可以正常工作.
所以问题是:当我的容器启动时,如何让我的cron作业自动启动?
Dockerfile
FROM microsoft/dotnet:latest
RUN apt-get update && apt-get install -y cron
COPY . /app
WORKDIR /app
ADD crontab /etc/cron.d/crontab
RUN chmod 0600 /etc/cron.d/crontab
RUN crontab -u root /etc/cron.d/crontab
RUN touch /var/log/cron.log
RUN ["dotnet", "restore"]
RUN ["dotnet", "build"]
EXPOSE 5000/tcp
CMD cron && tail -f /var/log/cron.log
CMD service cron start
Run Code Online (Sandbox Code Playgroud)
crontab中
* * * * * echo "Hello world" >> /var/log/cron.log 2>&1
# Empty space …Run Code Online (Sandbox Code Playgroud) 试图在docker容器中运行cron作业.有一个正确配置的supervisord
(我看到cron -f了ps -ef,如果我杀了它重生)
crontab文件(用于测试):
* * * * * echo hi >> /root/test
我试图把它/etc/cron.d/crontab /etc/crontab和在/var/spool/cron/crontabs/crontab
没有什么工作 - 我没有得到任何东西 /root/test
有任何想法吗?
我在docker容器中运行"cron".
每天都会执行一个脚本.
我想通过"docker logs"看到这个脚本的输出
PID 0的进程是我容器中的cron守护进程.入口点在前台启动cron:
/usr/sbin/crond -f
Run Code Online (Sandbox Code Playgroud)
我明白,我可以将脚本输出重定向到文件"path/to/logs"
07 2 * * * /data/docker/backup_webserver/backupscript.sh >> path/to/logs
Run Code Online (Sandbox Code Playgroud)
并按如下所示启动容器以查看日志
"tail -f path/to/logs"
Run Code Online (Sandbox Code Playgroud)
但是文件"path/to/logs"会在容器的运行时期间增长.
是否有可能从crontab直接登录到"docker logs"?
事情是这样的:我有一个堆栈,其中节点js后端将消息发送到队列,而perl worker(cron作业)使用该队列中的消息。我已经“ dockerized”了节点js后端,但是现在我正尝试对Perl Workers执行相同的操作。
但是,已经在docker化了Perl应用程序本身,因为队列的“作业”是基于crontab消耗的(即每2分钟),所以我的问题是:
从docker-compose文件构建堆栈时,实现此目标的最佳方法是什么?
让我知道是否需要提供更多详细信息。谢谢!
docker ×6
cron ×4
crontab ×2
linux ×2
asp.net-core ×1
bash ×1
devops ×1
docker-swarm ×1
dockerfile ×1
git ×1
line-breaks ×1
logging ×1
redirect ×1
shell ×1
ubuntu ×1
ubuntu-12.04 ×1
unix ×1
windows ×1