注释:shell 单括号运算符号:a=$(date);等同于:a=`date`
双括号运算符:a=$((1+2));echo $a;等同于:a=`expr 1 + 2`
东西有点多,就一起都讲了。
日期格式:
获取当前日期:1,date "+%Y-%m-%d %H:%M:%S" 结果:2018-08-09 18:12:18
2,date -d "now" +%Y-%m-%d now 可以换成yesterday等 如:date -d "1 days ago" +%Y-%m-%d
当前时间微妙数:1,date "+%s" 结果:1533809599
2,date +%s -d'2018-08-08 00:00:00'
获取具体日期的前几时间:
1,为 date -d "n days ago $yesterday" +%Y-%m-%d
n 的取值范围为任何整数,例如-3,-2,0,1,2,3,等等.......days 可以换成 minutes hours week 等等。
时间相加:转换成 微妙数进行操作 date +%Y-%m-%d\ %H:%M:%S -d "1970-01-01 UTC $time1 seconds"
相减 :date +%s -d '2010-01-01' - date +%s -d '2009-01-01 11:11:11'
连接数据库:
#!/bin/bash
#连接MySQL数据库
Host=127.0.0.1(或者数据库服务器地址)
User=username
PW=password
#本地连接
mysql -u$User -p$PW <<EOF #开始SQL语句
use DATABASE_NAME;#选择数据库(选择模式)
SELECT * FROM TABLE_NAME;#执行SQL语句
COMMIT;#对于更新表格的操作执行commit语句
EOF #结束SQL语句
#远程连接
mysql -h$Host -u$User -p$PW <<EOF #指定Host,其他不变
use DATABASE_NAME;
SELECT * FROM TABLE_NAME;
COMMIT;
如果要操作多个数据库,要建立多个数据库连接
depts=`mysql -u $USER $DATABASE <<EOF | tail -n +2
SELECT DISTINCT dept FROM $TABLE;
EOF`
data=`mysql -h$les_Host -p$les_PW -u$les_User -D$les_db -s <<EOF #指定Host,其他不变
SELECT count(*) FROM $les_tb WHERE actual_start_time<="$init_time" AND status=1;
COMMIT;
EOF`
将数据保存在变量里面,注意:第二个数据库语句 -s 如果不增加 -s 会放回字符串,如果下面语句需要使用的话,这样会报错的
上面的语句 返回的结果是 data 的值为: count(*) 250
定时任务执行:
直接用crontab命令编辑
cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
crontab -u //定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务
记住几个特殊符号的含义:
“*”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字
使用方法:参考Linux 执行定时任务 shell脚本
最后推荐:shell生成随机字符串的方法: shell 生成指定范围随机数与随机字符串
我的脚本的代码:托管github:mydash 脚本连接数据库