docker 取消sudo执行操作

有的时候处于安全以及便利的考虑我们希望以非root执行docker的命令,下面是方法:

1.将希望不需要sudo 执行docker命令的用户添加到docker组
例如:将用户名jmh添加到docker组内

sudo gpasswd jmh docker

2.修改sock权限

sudo chmod a+rw /var/run/docker.sock

Django定时任务-基于crontab的简单版

需求场景

web应用中常常会有定时处理某项任务的需求,flask框架比较灵活,简单的需求中可以低耦合的使用APScheduler,复杂的需求也很容易集成进celery。但是在django中,定制起来就比较麻烦,django现有较为成熟的定时任务组建django-crontab和django-celery。前者基于crontab,后者基于celery。
先说说较为简单的crontab。

安装django-crontab

pip install django-crontab

在配置文件中加入django-crontab

setting.py

INSTALLED_APPS = [
    ...
    'django_crontab',
]
CRONJOBS = [
    ('* * * * *', 'django.core.management.call_command', 
    ['task'], {}, ">> task.log"),
]   # 与crontab定时器规则一样, []中写入任务名称,{}中可传入参数

这里使用了自定义的manage指令,本片中不做深入说明。也可以替换为要运行的py代码,写清楚详细路径即可。

添加crontab

现在就可以将任务添加进系统的crontab中了

python manage.py crontab add

收到下面的提示就算提交成功了,也可以通过 crontab -l查看当前有效的定时任务

bash -cl "/bin/python /home/hsm/Dropbox/Python2/project/manage.py crontab add /home/hsm/Dropbox/Python2/project"
  adding cronjob: (5137385ee17caca44bc53c1bef979825) -> ('* * * * *', 'django.core.management.call_command', ['task'], {}, '>> task.log')

删除crontab

要删除crontab,可执行

python manage.py crontab remove

centos 定时任务按秒执行crontab

测试环境需要一个脚本,定时让mysql写入一个数据,需要crontab 按秒执行

写的shell脚本

[root@kvm-ovirt shell]# cat mysql.sh 
#!/bin/sh
############
#by xuebao 百宝盆未登陆数据
mysql  <

在crontab 中写定时任务

提示:因为这个10秒执行还有缺陷,60秒 和10 秒钟执行 有20秒的空缺,此方法不适合特别精确的crontab 按秒执行
,需要多少秒在 sleep 后面写几。
例子:我的是每10秒执行一次。

[root@kvm-ovirt shell]# crontab -l
* * * * * sleep 10;  /bin/sh /home/shell/mysql.sh
* * * * * sleep 20;  /bin/sh /home/shell/mysql.sh
* * * * * sleep 30;  /bin/sh /home/shell/mysql.sh
* * * * * sleep 40;  /bin/sh /home/shell/mysql.sh
* * * * * sleep 50;  /bin/sh /home/shell/mysql.sh

centos7.2 利用crontab执行定时计划任务

就像再windows上有计划任务一样,centos7 自然也有计划任务,而且设置更为灵活,好用。再centos7 上可以利用crontab 来执行计划任务, 依赖与 crond 的系统服务,这个服务是系统自带的,可以直接查看状态,启动,停止。

注:第一次使用crond 网上有人说需要安装crond服务!可以通过命令 rpm -qa|grep cron 查看是否安装了该服务!

1. 查看cron的状态,设为开机启动

$ systemctl status crond (查看状态)

$ systemctl enable crond (设为开机启动)

$ systemctl start crond (启动crond服务)

2。编辑crontab 的配置文件,设置定时任务。

$ crontab -u 用户名 -e (编辑用户的定时任务,指定的执行的用户,默认为当前执行命令的用户)
--------------------------------------------------------------------------------------------
# crontab基本格式
# +---------------- minute  分钟(0 - 59)
# |  +------------- hour    小时(0 - 23)
# |  |  +---------- day     日期(1 - 31)
# |  |  |  +------- month   月份(1 - 12)
# |  |  |  |  +---- week    星期(0 - 7) (星期天=0 or 7)
# |  |  |  |  |
# *  *  *  *  *  要运行的命令

*/30 * * * * /usr/local/mycommand  (每天,每30分钟执行一次 mycommand命令)
-----------------------------------------------------------------------------------------------------------
$ crontab -u 用户名 -l  (列出用户的定时任务列表)

3. 保存退出后,即可生效,默认crontab会每分钟检查一次任务文件的。
除了这样编辑外,还可以直接写到crond的主配置文件内,默认执行者为root。

$ vim /etc/crontab (直接在最下面添加你的任务命令即可)

PS:特别注意,crond的任务计划, 有并不会调用用户设置的环境变量,它有自己的环境变量,当你用到一些命令时,比如mysqldump等需要环境变量的命令,手工执行脚本时是正常的,但用crond执行的时候就会不行,这时你要么写完整的绝对路径,要么将环境变量添加到 /etc/crontab 中。

好了,计划任务就是这么简单了,但是计划任务,执行的语句如果是多条,则需要用药shell脚本,自己先写一个shell脚本,然后在计划任务中,执行这个脚本即可。至于shell脚本的写法, 这里不赘述,后面再补充。​

Linux 设置定时任务crontab命令

1、 crontab命令概念

crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。

cron 系统调度进程。 可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业。

crontab命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个crontab文件来保存调度信息。系统管理员可以通过cron.deny 和 cron.allow 这两个文件来禁止或允许

用户拥有自己的crontab文件。

2、检查是否安装了crontab,如果提示未安装请自行安装,crontab安装包在系统光盘里面的pacekage文件夹,也可以进入此网站找 http://rpmfind.net/ 相对应的crontab安装包。
未分类
3、 crontab服务启动与关闭。
未分类
4、 全局配置文件:

crontab在/etc目录下面存在cron.hourly,cron.daily,cron.weekly,cron.monthly,cron.d五个目录和crontab,cron.deny二个文件。
未分类
cron.daily是每天执行一次的job

cron.weekly是每个星期执行一次的job

cron.monthly是每月执行一次的job

cron.hourly是每个小时执行一次的job

cron.d是系统自动定期需要做的任务

crontab是设定定时任务执行文件

cron.deny文件就是用于控制不让哪些用户使用Crontab的功能

5、 用户配置文件:

每个用户都有自己的cron配置文件,通过crontab -e 就可以编辑,一般情况下我们编辑好用户的cron配置文件保存退出后,系统会自动就存放于/var/spool/cron/目录中,文件以用户名命名.linux的cron服务是每隔一分钟去读取一次/var/spool/cron,/etc/crontab,/etc/cron.d下面所有的内容.
未分类
6、 crontab文件格式:

  *           *        *        *        *           command

minute   hour    day   month   week      command

分          时         天      月        星期       命令

未分类
minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

7、 特殊字符:

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”。

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”。

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

8、在home目录下编写一个test.sh脚本,脚本功能是把/home下ifcfg-eth0这个文本复制到/mnt目录下。
未分类
9、运行crontab –e 编写一条定时任务 */5 * * * * /home/test.sh 在每5分钟执行一次test.sh脚本。
未分类
未分类
10、查询当前用户定时任务或删除当前用户定时任务。
未分类
11、设置crond开机自动启动。
未分类
12、实例:
未分类

python多环境管理工具virtualenv

系统环境

CentOS 7

安装

通过pip直接安装
pip install virtualenv

使用示例

# 在/usr/local/下面创建一个virtualenv目录,作为多环境管理用目录
mkdir /usr/local/virtualenv

# 进入上面创建的目录
cd /usr/local/virtualenv

# 创建一个名为env1的python环境(这里没加参数,该命令其实有很多参数可用)
virtualenv env1

# 执行之后,目录下会创建一个env1目录,如果想切换到env1环境下,则执行一下命令
source env1/bin/activate

使用扩展包

为了更简便的切换和管理virtualenv环境,可以借助virtualenvwrapper扩展包

安装扩展包

pip install virtualenvwrapper

配置环境变量,可在/etc/profile里添加如下指令

# 指定工作空间,可以自己随意创建
WORKON_HOME=/usr/local/virtualenv
# /usr/bin/virtualenvwrapper.sh是安装扩展包后生成的,不同的系统可能生成的文件路径不同
source /usr/bin/virtualenvwrapper.sh

常用命令

# 创建环境
mkvirtualenv [环境名]

# 切换到环境;后面不跟环境名,可以显示出所有环境
workon [环境名]

# 查看已有的环境
lsvirtualenv

# 查看当前环境中已安装的包
lssitepackages

# 退出当前环境
deactivate