s
定时任务固定格式:
分钟 小时 一月的天数 月份 一周的天数
分钟 | 小时 | 一月的天数 | 月份 | 一周的天数 | 备注 |
0-59 | 0-23 | 1-31 | 1-12 | 0-7(表示周天) |
1、每天晚上20点整自动执行
0 20 * * * /opt/路径执行文件
2、一周1,3,5晚上20点整执行
0 20 * * 1,3,5 /opt/路径执行文件
3、每周周1~周5晚20点整执行
0 20 * * 1-5 /opt/路径执行文件
4、一周内每2天,晚上20点整执行
0 20 * * */2 /opt/路径执行文件
Centos 8 crontab
[root@lindows ~]# cat /etc/chrony.conf
server 10.27.126.249 iburst
[root@lindows ~]# crontab -l
30 * * * * /usr/bin/chronyc sources
注:docker 依赖宿主机的时钟源 server 10.244.13.33 iburst
Redhat Linux Crontab
http://baike.baidu.com/view/1229061.htm
crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。
该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。
该词来源于希腊语 chronos(χρνο),原意是时间。
通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。
这类作业一般称为cron jobs。
crontab快速注释及撤销注释
http://blog.chinaunix.net/uid-20680669-id-3474402.html
先使用crontab -e进行对crontab的编辑操作
$ crontab -e
然后使用vi的如下编辑命令
:%s/^/#/
就可以将定时执行的任务前面都加上一个'#',进行注释掉。
同样等,某些操作完成后,也是,先进行对crontab的编辑
$ crontab -e
使用如下编辑命令
:%s/^#//
就可以讲上次所有注释的定时任务,全部撤销。
Redhat image auto download
http://lindows.iteye.com/blogs/1483469
加载Redhat Linux Crontab 列表 / 每天中午11点定时下载美食图片
[root@locahost ~]# crontab -e
# 每天10:30下载新文件index.php?mod=yugao008
30 10 * * * wget http://weibo.cnsu****.com/index.php?mod=yugao008
# 每天11:00根据新文件index.php?mod=yugao008匹配一定规则自动下载指定美食菜谱图片
0 11 * * * grep 'o.jpg" class="artZoomAll"' index.php\?mod\=yugao008 | awk -F "\"" '{print $2}' > $(hostname)_$(date +%Y%m%d%H%M%S).txt | grep http $(hostname)*.txt | awk -F "txt:" '{print $2}' | sort | uniq | more | xargs -I {} wget -P /home/lindows/ {}
Redhat backup log
http://netkiller-github-com.iteye.com/blog/1765425
循环增量备份
Bash代码
全备份
Php代码
RedHat top 命令详解 / top命令自动打印
问题1:linux中top查看进程,进程详细信息显示不全
解决1:[root@centos8 yum.repos.d]# top -c -bw 500, 其中-bw是设置宽度的
文件:[root@localhost ~]# top_java.sh
内容:
#!/bin/sh
# 用top查看java进程并自动记录到txt里
while(true)
do
top -b -n 1 | grep java >> top_$(hostname)_$(date %Y%m%d%H%M%S).txt;
sleep 60;
done;
[root@app01 ~]# crontab -l
30 * * * * /usr/sbin/ntpdate 192.168.118.201
00 00 * * * /nmon/nmon_x86_rhel54 -f -N -m /nmon -s 60 -c 1440
1 * * * * /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/task.sh
30 * * * * /root/top.sh
[root@app01 ~]# more top.sh
top -n 1 -b > /root/mytop/top_$(date +%H:%M:%S).txt
或
top -b -Hp 494 -d 1 -n 1 > thread.$(date +%Y%m%d.%H%M%S).494.0000.txt
(494为进程号)
top -b -Hp -d 1 -n 1 > topinfo.$(date +%Y%m%d.%H%M%S). .0000.txt ; kill -3
http://cppmule.iteye.com/blog/1731343
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
http://fuliang.iteye.com/blog/996119
VIRT:virtual memory usage
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量
RES:resident memory usage 常驻内存
1、进程当前使用的内存大小,但不包括swap out
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小
SHR:shared memory
1、除了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR
4、swap out后,它将会降下来
DATA
1、数据占用的内存。如果top没有显示,按 f 键 可以显示出来。
2、真正的该程序要求的数据空间,是真正在运行中要使用的。
http://fuliang.iteye.com/blog/996119
进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。
序号 | 列名 | 含义 |
a | PID | 进程id |
b | PPID | 父进程id |
c | RUSER | Real user name |
d | UID | 进程所有者的用户id |
e | USER | 进程所有者的用户名 |
f | GROUP | 进程所有者的组名 |
g | TTY | 启动进程的终端名。不是从终端启动的进程则显示为 ? |
h | PR | 优先级 |
i | NI | nice值。负值表示高优先级,正值表示低优先级 |
j | P | 最后使用的CPU,仅在多CPU环境下有意义 |
k | %CPU | 上次更新到现在的CPU时间占用百分比 |
l | TIME | 进程使用的CPU时间总计,单位秒 |
m | TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
n | %MEM | 进程使用的物理内存 百分比 |
o | VIRT | 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
p | SWAP | 进程使用的虚拟内存中,被换出的大小,单位kb。 |
q | RES | 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA |
r | CODE | 可执行代码占用的物理 内存大小,单位kb |
s | DATA | 可执行代码以外的部分(数据段+栈)占用的物理 内存大小,单位kb |
t | SHR | 共享内存大小,单位kb |
u | nFLT | 页面错误次数 |
v | nDRT | 最后一次写入到现在,被修改过的页面数。 |
w | S | 进程状态。 D =不可中断的睡眠状态 R =运行 S =睡眠 T =跟踪/停止 Z =僵尸进程 |
x | COMMAND | 命令名/命令行 |
y | WCHAN | 若该进程在睡眠,则显示睡眠中的系统函数名 |
z | Flags | 任务标志,参考 sched.h |
RedHat ntpd / ntpdate 校准时间 / 调整时间
http://bbs.linuxtone.org/thread-4585-1-1.html
ntpd 是校准时间
[root@b2ccache yum.repos.d]# /usr/sbin/ntpd --version
/usr/sbin/ntpd: ntpd 4.2.2p1@1.1570-o Wed Sep 3 14:28:29 UTC 2008 (1)
ntpdate 是调整时间
[root@b2ccache yum.repos.d]# /usr/sbin/ntpdate -v
7 Sep 17:14:13 ntpdate[28826]: ntpdate 4.2.2p1@1.1570-o Wed Sep 3 14:28:30 UTC 2008 (1)
7 Sep 17:14:13 ntpdate[28826]: no servers can be used, exiting
RedHat Linux Client每10分钟自动同步192.168.10.1的RHEL机器时间
http://blueicer.blog.51cto.com/395686/116426
[root@nginxServer4 ~] # conrtab -l
0-59/10 * * * * /usr/sbin/ntpdate 192.168.10.1
1. 与一个已知的时间服务器同步
2. 配置网络时间协议(ntp)
1. 让linux自动同步时间
vi /etc/crontab
加上一句:
00 0 1 * * root rdate -s time.nist.gov
time.nist.gov 是一个时间服务器.
2. 时间服务器配置(192.168.10.1)
1). # rpm -ivh ntp-4.1.2-4.EL3.1.i386.rpm
2). # vi /etc/ntp.conf
注释一行
restrict default ignore
加入一行
restrict 192.168.10.0 mask 255.255.255.0 notrust nomodify notrap
3). # vi /etc/ntp/step-tickers
加入一行
pool.ntp.org
这样每次ntpd启动时,会自动连接该国际标准时间服务器;
4). # service ntpd start
5). # netstat -an |grep 123
确保该端口以udp方式开放
时间客户端配置(192.168.10.2)
1). # ntpdate 192.168.10.2
应该显示同步成功
2). # crond -e
加入
0-59/10 * * * * /usr/sbin/ntpdate 192.168.10.1
表示每隔10分钟同步一次时间
http://linux.chinaunix.net/techdoc/system/2009/08/30/1132834.shtml
定时对自动备份好的文件进行删除
# EDITOR=vi
# export EDITOR
# crontab -e //添加以下一行
0 0 * * 1,2,3,4,5 /usr/bin/find /extra/bak/*.gz -ctime +10 -exec rm {} \;
以上实现,周一到周五的第天0点时,检查删除/extra/bak下所有的10天以前的所有的gz文件!
[root@stageserver DTS]# crontab -l
10 03 * * * sh /usr/local/DTS/cronjob.sh
10 03 * * * sh /usr/local/DTS/rmlog.sh
cronjob.sh
#!/bin/bash
cd /usr/local/DTS/
date_start=`date|awk -F"[ :]" '{print $4*3600 + $5*60 +$6}'`
echo `date` $date_start>>log.txt
export CLASSPATH=$CLASSPATH:/usr/local/DTS/LogTransmission.jar
/usr/local/jdk1.6.0_16/bin/java -jar LogTransmission.jar >>log.txt
date_end=`date|awk -F"[ :]" '{print $4*3600 + $5*60 +$6}'`
echo `date` $date_end>>log.txt
time=`expr "$date_end" - "$date_start"`
echo "your command take $time s" >>log.txt
echo "---------------------------" >>log.txt
rmlog.sh
#!/bin/bash
#2010-03-05 zouyulong
#rm old logs
#/usr/local/DTS/rmlog.sh
cd /data/ProjectDocument/DailyLog/
find . -ctime +29|xargs rm -rf
# find . -ctime +29|xargs rm -rf *.zip ???
Linux 中 crontab 详解及示例
http://darkmasky.iteye.com/blog/224891
原文引自:http://blog.chinaunix.net/u/31547/showart_438018.html
cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
你也可以将这个服务在系统启动的时候自动启动:
在/etc/rc.d/rc.local这个脚本的末尾加上:
/sbin/service crond start
现在Cron这个服务已经在进程里面了,我们就可以用这个服务了,Cron服务提供以下几种接口供大家使用:
1、直接用crontab命令编辑
cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除某个用户的cron服务
crontab -e //编辑某个用户的cron服务
比如说root查看自己的cron设置:crontab -u root -l
再例如,root想删除fred的cron设置:crontab -u fred -r
在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e
进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
这个格式的前一部分是对时间的设定,后面一部分是要执行的命令,如果要执行的命令太多,可以把这些命令写到一个脚本里面,然后在这里直接调用这个脚 本就可以了,调用的时候记得写出命令的完整路径。时间的设定我们有一定的约定,前面五个*号代表五个数字,数字的取值范围和含义如下:
分钟 (0-59)
小時 (0-23)
日期 (1-31)
月份 (1-12)
星期 (0-6)//0代表星期天
除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。以下举几个例子说明问题:
每天早上6点
0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。
每两个小时
0 */2 * * * echo "Have a break now." >> /tmp/test.txt
晚上11点到早上8点之间每两个小时,早上八点
0 23-7/2,8 * * * echo "Have a good dream:)" >> /tmp/test.txt
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * 1-3 command line
1月1日早上4点
0 4 1 1 * command line
每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在 这个文件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。
2、编辑/etc/crontab 文件配置cron
cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运 用 cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
HOME=/ //使用者运行的路径,这里是根目录
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本
02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本
42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本
大家注意"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。
--------------------------------------
基本格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
crontab文件的一些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启lighttpd 。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启lighttpd 。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启lighttpd 。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启lighttpd 。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启lighttpd 。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启lighttpd
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启lighttpd
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启lighttpd
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启lighttpd
日志查询方法
http://www.iteye.com/topic/620950
关于查找zip日志文件里关键字的搜索
[root@stageserver DTS]# find . -name '*.zip'| xargs -I {} zipgrep '20:17:19:274' {}|more
压缩文件直接查看查找 zcat zmore zless zgrep zdiff vi
http://blog.chinaunix.net/u3/103972/showart.php?id=2178838
关键字附近的信息 zgrep -A 或 -B 或 -C或 -E string file.gz (-A after -B before -C 上下都取 -E 正则 )
关键字之间的信息 sed -n '/string1/,/string2/' file
最初一段 sed -n '1,np' file
最后一段 tail -n n file, tail -f file
压缩文件直接查看、查找 : zcat ,zmore, zless zgrep zdiff vi 。
这是单个压缩文件,如果是压缩的目录呢? zipgrep
zipgrep -C3 'Send sms failed!' log0423_03_00.zip|more
zipgrep -C3 -C和数字之间无空格
grep -l ‘关键字’ 只显示包括关键字的文件 grep -n 显示行号
压缩 gzip , zip desfile.zip sourcefile
增加或修改压缩包内的文件 zip -r product.zip product//opmn.xml
解压缩 unzip -x(排除) 只解压某些文件 unzip file.zip somefileforunziplist
cp 如果遇到nfs共享目录尽量使用绝对路径
搜索历史命令 history|grep -E 'grep|sed|more|tail'
先grep搜索大一点范围的内容到文件再到此文件仔细找具体内容
linux系统运维常用命令
http://blogold.chinaunix.net/u3/107531/showart_2113630.html
2.
查看进程3.
按 cpu 利用率从大到小排列4.
打印说 cache 里的 URL5.
查看 http 的并发请求数及其 TCP 连接状态 :6. sed -i '/Root/s/no/yes/' /etc/ssh /sshd_config sed
在这个文里 Root 的一行,匹配 Root 一行,将 no 替换 成 yes.killall -TERM mysqld
kill -9 `cat /usr/local/apache2/logs/httpd.pid`
试试查杀进程 PID8.
显示运行 3 级别开启的服务 :9.
如何在编写 SHELL 显示多个信息,用 EOF10. for
的巧用 ( 如给 mysql 建软链接 )11.
取 IP 地址:ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'
12.
内存的大小 : 13.
netstat -an -t | grep ":80" | grep ESTABLISHED | awk '{printf "%s %s\n",$5,$6}' | sort
14.
查看 Apache 的并发请求数及其 TCP 连接状态:15.
因为同事要统计一下服务器 下面所有的 jpg 的文件的大小 , 写了个 shell 给他来统计 . 原来用 xargs 实现 , 但他一次处理一部分 , 搞的有多个总和 ...., 下面的命令 就能解决啦 .CPU
的数量(多核算多个 CPU , cat /proc/cpuinfo |grep -c processor )越多,系统 负载越低,每秒能处理的请求数也越多。---------------------------------------------------------------------------------------
16 CPU
18 CPU
负载 #mpstat 1 119
内存空间 # free20 swap
空间 # free21
磁盘空间 # df -h22
磁盘 I/O 负载 # iostat -x 1 223
网络负载 # sar -n DEV24
网络错误 # netstat -i25
网络连接数目 # netstat -an | grep -E “^(tcp)” | cut -c 68- | sort | uniq -c | sort -n26
进程总数 # ps aux | wc -l27
可运行进程数目 # vmwtat 1 528
进程 # top -id 129
网络状态 检查 DNS, 网关等是否可以正常连通30
用户 # who | wc -l31
系统日志 # cat /var/log/rflogview/*errors32
核心日志 # dmesg33
系统时间 # date34
打开文件数目 # lsof | wc -l35
日志 # logwatch –print 配置 /etc/log.d/logwatch.conf ,将 Mailto 设置为自己的 email 地址,启动 mail 服务 (sendmail 或者 postfix ) ,这样就可以每天收到日志报告了。36.
杀掉 80 端口相关的进程37.
清除僵死进程。38.tcpdump
抓包 ,用来防止 80 端口被人攻击时可以分析数据39.
然后检查 IP 的重复数 并从小到大排序 注意 "-t\ +0" 中间是两个空格40.
查看有多少个活动的 php -cgi 进程chkconfig --list | awk '{if ($5=="3:on") print $1}'
41.kudzu 查看网卡型号
kudzu --probe --class=network
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了
匹配双字节字符 ( 包括汉字在内 ) : [^\x00-\xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计 2 , ASCII 字符计 1 )
匹配空白行的正则表达式: \n\s*\r
评注:可以用来删除空白行
匹配 HTML 标记的正则表达式: <(\S*?)[^>]*>.*?\1>|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
匹配首尾空白字符的正则表达式: ^\s*|\s*$
评注:可以用来删除行首行尾的空白字符 ( 包括空格、制表符、换页符等等 ) ,非常有用的表达式
匹配 Email 地址的正则表达式: \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
评注:表单验证时很实用
匹配网址 URL 的正则表达式: [a-zA-z]+://[^\s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求
匹配帐号是否合法 ( 字母开头,允许 5-16 字节,允许字母数字下划线 ) : ^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用
匹配国内电话号码: \d{3}-\d{8}|\d{4}-\d{7}
评注:匹配形式如 0511-4405222 或 021-87888822
匹配腾讯 QQ 号: [1-9][0-9]{4,}
评注:腾讯 QQ 号从 10000 开始
匹配中国邮政编码: [1-9]\d{5}(?!\d)
评注:中国邮政编码为 6 位数字
匹配身份证: \d{15}|\d{18}
评注:中国的身份证为 15 位或 18 位
匹配 ip 地址: \d+\.\d+\.\d+\.\d+
评注:提取 ip 地址时有用
匹配特定数字:
^[1-9]\d*$ // 匹配正整数
^-[1-9]\d*$ // 匹配负整数
^-?[1-9]\d*$ // 匹配整数
^[1-9]\d*|0$ // 匹配非负整数(正整数 + 0 )
^-[1-9]\d*|0$ // 匹配非正整数(负整数 + 0 )
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ // 匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ // 匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ // 匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ // 匹配非负浮点数(正浮点数 + 0 )
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ // 匹配非正浮点数(负浮点数 + 0 )
评注:处理大量数据时有用,具体应用时注意修正
匹配特定字符串:
^[A-Za-z]+$
// 匹配由 26 个英文字母组成的字符串
^[A-Z]+$
// 匹配由 26 个英文字母的大写组成的字符串
^[a-z]+$
// 匹配由 26 个英文字母的小写组成的字符串
^[A-Za-z0-9]+$
// 匹配由数字和 26 个英文字母组成的字符串
^\w+$
// 匹配由数字、 26 个英文字母或者下划线组成的字符串
评注:最基本也是最常用的一些表达式
end