1、运行nginx要特殊
docker 容器默认会把容器内部第一个进程,也就是pid=1的程序作为docker容器是否正在运行的依据,如果docker 容器pid挂了,那么docker容器便会直接退出。
nginx -g 'daemon off;'
2、修改nginx.conf权限要特殊
echo "$(sed 's/192.168.1.1/192.168.1.254/g' /etc/resolv.conf)" > /etc/resolv.conf
即可
最好方案:先挂载nginx.conf的配置内容到临时文件,如conf.temp,然后,cp conf.temp nginx.conf。 这样就可以随意改nginx.conf 了。
3、sed使用变量要用双引号,不可单引号
sed命令使用双引号的情况下,可以使用$var(变量)直接引用:
echo | sed "s/^/$RANDOM.rmvb_/g"
13562.rmvb_
4、linux 中${ }截取变量字符串
从右边第几个字符开始,及字符的个数。代码如下:echo ${var:0-7:3}
其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。
结果是:123
5、./ 和 sh 的使用区别
使用“./”执行脚本,对应的xxx.sh脚本必须要有执行权限;
使用“sh” 执行脚本,对应的xxx.sh没有执行权限,亦可执行;
当脚本开头使用#!设置使用的shell类型时,使用“./”执行脚本时,则使用“#!”标志的shell执行脚本;若无使用“#!”标记,则使用系统设置的默认shell执行脚本;
6、使用crond、crontab 实现定时任务
Dockerfile:
RUN yum install crontabs -y
CMD ["/usr/sbin/crond","-n"]
或者直接容器内:
yum install crontabs -y
/usr/sbin/crond -i
cron在3个地方查找配置文件:
1、/var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如tom建的crontab任务对应的文件就是/var/spool/cron/tom。一般一个用户最多只有一个crontab文件。
2、/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab。
cat /etc/crontab结果如下
3、/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
查看cron运行日志:
看 /var/log/cron.log这个文件就可以,可以用tail -f /var/log/cron.log观察
创建cron脚本
第一步:写cron脚本文件,命名为crontest.cron。
15,30,45,59 * * * * echo "xgmtest....." >> xgmtest.txt 表示,每隔15分钟,执行打印一次命令
第二步:添加定时任务。执行命令 “crontab crontest.cron”。搞定
第三步:"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本
注意:这操作是直接替换该用户下的crontab,而不是新增
也可以crontab -uroot -e编辑定时执行写好脚本,例如crontab -uroot -e进入编辑页面如下,/root/updatecode.sh为脚本所在位置