一、linux配置定时crontab
1、执行方法
a、crontab –e : 修改 crontab 文件,如果文件不存在会自动创建。
b、10 0 . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
c、crontab -l:显示 crontab 文件,查看定时配置。
2、定时含义(参考附件crontab格式说明) 五个参数依次代表的含义分、时、日、月、星期。
3、秒级定时任务执行采取sleep方式,执行的时间间隔要能被60整除,如下例子。也可以把sleep命令写进程序中然后引入程序。
例如:
程序每10s执行一次
-
-
-
-
- . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
-
-
-
-
-
-
-
- sleep 10; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
-
-
-
-
-
-
-
- sleep 20; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
-
-
-
-
-
-
-
- sleep 30; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
-
-
-
-
-
-
-
- sleep 40; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
-
-
-
-
-
-
-
- sleep 50; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
程序每5s执行一次
- sleep 50; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
-
-
-
-
-
-
-
- . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
-
-
-
-
-
-
-
- sleep 5 . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
-
-
-
-
-
-
-
- sleep 10; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
-
-
-
-
-
-
-
- sleep 15; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
-
-
-
-
-
-
-
- sleep 20; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
-
-
-
-
-
-
-
- sleep 25; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
-
-
-
-
-
-
-
- sleep 30; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
-
-
-
-
-
-
-
- sleep 35; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
-
-
-
-
-
-
-
- sleep 40; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
-
-
-
-
-
-
-
- sleep 45; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
-
-
-
-
-
-
-
- sleep 50; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
-
-
-
-
-
-
-
- sleep 55; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
4、crontab环境变量问题:crontab总是不会缺省的从用户profile文件中读取环境变量参数,经常导致在手工执行某个脚本时是成功的,但是到crontab中试图让它定期执行时就是会出错。2种方法可以解决这个问题,主要是让环境变量在crontab中被定义
a、在Shell文件里面获取环境变量值的路径写成绝对路径,别用环境变量的路径值。
b、Shell脚本缺省的#!/bin/sh开头换行后的第一行用(前提是profile和.bash_profile分别存在需要的路径配置)
#!/bin/sh
. /etc/profile
. ~/.bash_profile
只有crontab在执行脚本的时候能够读到用户的环境变量参数,才能保证定时能正常被执行。
- sleep 55; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
-
-
-
2、关于linux环境变量
系统级:
(1)/etc/profile:该文件是用户登录时,操作系统定制用户环境时使用的第一个文件,应用于登录到系统的每一个用户。该文件一般是调用/etc/bash.bashrc文件。
/etc/bash.bashrc:系统级的bashrc文件。
(2)/etc/environment:在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量。
用户级(这些文件处于家目录下)
(1)~/.profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。这里是推荐放置个人设置的地方
(2)~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。不推荐放到这儿,因为每开一个shell,这个文件会读取一次,效率肯定有影响。
(3)~/.bash_profile or ~./bash_login当这个文件存在时,在登录shell时会读取./bash_profile文件,而不是.profile文件。我认为该文件实现的目的 跟.profile文件是一样的,当查找的资料中需要你修改.bash_profile文件,但却你没有该文件的时候,也可以修改.profile来完成 实现
点赞
————————————————
版权声明:本文为CSDN博主「简单式smiling」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012240363/article/details/88301033
使用Laravel分版本环境部署时遇到的问题
Crontab 执行 Laravel 获取不到用户全局变量,通过查阅资料获知 Crontab 载入配置的时候 并未载入 /etc/profile ;
针对这个现象 初期解决方式是在Crontab 任务内添加配置文件载入
?
1
2
3
4
5
-
-
-
-
- source /etc/profile && php task.php
或
- source /etc/profile && php task.php
-
-
-
-
-
-
- export PHP_ENV=prod && php task.php
或
- export PHP_ENV=prod && php task.php
-
-
-
-
-
-
-
- /home/user_name/task.sh && php task.php
-
-
-
-
之后发现配置文件的载入顺序
•/etc/environment
是系统在登录时读取的第一个文件,用于为所有进程设置环境变量。系统使用此文件时并不是执行此文件中的命 令,而是根据KEY=VALUE模式的代码,对KEY赋值以VALUE,因此文件中如果要定义PATH环境变量,只需加入一行形如 PATH=$PATH:/xxx/bin的代码即可。
•/etc/profile
是系统登录时执行的第二个文件,可以用于设定针对全系统所有用户的环境变量。
•~/.profile
是对应当前登录用户的profile文件,用于定制当前用户的个人工作环境。
•/etc/bash.bashrc
是针对所有用户的bash初始化文件,在此中设定的环境变量将应用于所有用户的shell中,此文件会在用户每次打开shell时执行一次。
•~/.bashrc
是对应当前登录用户的bash初始化文件,当用户每次打开shell时,系统都会执行此文件一次。
经测在 /etc/environment 设置后同样生效
总结
以上所述是小编给大家介绍的Linux Crontab 获取环境变量配置解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
来源:51CTO
作者:okhymok
链接:https://blog.51cto.com/2624035/2468023