以下是我经常用到又经常忘记的shell命令,此处集中记录下:
查看当前用户下的crontab任务
crontab -l
编辑crontab任务
crontab -e
写入crontab定时任务
echo "*/1 * * * * /home/task/nginx_conf_check.sh >/dev/null 2>&1" >> /var/spool/cron/root
shell if 写法
if [ "0" != "$IF_NG" ]
then
log "delete old nginx-configmap"
fi
shell for写法
for var in `ls /home/conf/*.conf`
do
OPTION="$OPTION--from-file=$var "
done
shell脚本开头
#! /bin/bash
shell脚本开头可以设置的环境变量
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/home/zxcdn/orslib/bin:/usr/local/sbin:~/bin
export PATH
shell常用写日志函数
function log()
{
echo -e "\033[32m[`date +'%Y-%m-%d %H:%M:%S'`]\033[0m $@" | tee -a ${log_file}
}
shell if 不等于判断
if [ "$old_time" != "$new_time" ]
shell 不管对错写为空或者其他文件
/home/root/nginx/sbin/nginx -t 2>/dev/null 1>&2
/home/root/nginx/sbin/nginx -t 2>$nginx_test_file 1>&2
>/dev/null 2>&1
shell if 常用判断
-ne —比较两个参数是否不相等
-lt —参数1是否小于参数2
-le —参数1是否小于等于参数2
-gt —参数1是否大于参数2
-ge —参数1是否大于等于参数2
-f — 检查某文件是否存在(例如,if [ -f "filename" ])
-d — 检查目录是否存在
! -d — 检查目录是否不存在
== - 判断两边相等
-eq - 判断两边相等
注意上述 -ne等,仅针对数字
shell if文件判断
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等
-r file 用户可读为真
-w file 用户可写为真
-x file 用户可执行为真
-f file 文件为正规文件为真
-d file 文件为目录为真
-c file 文件为字符特殊文件为真
-b file 文件为块特殊文件为真
-s file 文件大小非0时为真
-t file 当文件描述符(默认为1)指定的设备为终端时为真
linux系统日志在/var/log下
(1)/var/log/cron:crontabre任务打印的日志
(2)/var/log/messages:几乎系统发生的错误信息(或者重要的信息)都会记录在这个文件中。
(3)/var/log/lastlog:可以记录系统上面所有账号最近一次登陆系统时的相关信息
awk 使用
awk -F = '{print $2}'
awk 'BEGIN {FS=" "} {print $1}'
vi (:x)和(:wq)区别
":x" 和 ":wq" 的区别如下:
(1) :wq 强制性写入文件并退出(存盘并退出 write and quite)。即使文件没有被修改也强制写入,并更新文件的修改时间。
(2) :x 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间;否则不会更新文件修改时间。
这两者一般情况下没什么不一样,但是在编程方面,对编辑源文件可能会产生重要影响。因为文件即使没有修改,":wq" 强制更新文件的修改时间,
这样会让 make 编译整个项目时以为文件被修改过了,然后就得重新编译链接生成可执行文件。这可能会产生让人误解的后果,当然也产生了不必要的系统资源花销。不过像是版本控制的软件一般首选还是比较文件内容,修改时间一般不加以理会。
grep常用参数
-a 不要忽略二进制数据。
-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-c 计算符合范本样式的列数。
-C<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式> 指定字符串作为查找文件内容的范本样式。
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F 将范本样式视为固定字符串的列表。
-G 将范本样式视为普通的表示法来使用。
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i 胡列字符大小写的差别。
-l 列出文件内容符合指定的范本样式的文件名称。
-L 列出文件内容不符合指定的范本样式的文件名称。
-n 在显示符合范本样式的那一列之前,标示出该列的编号。
-q 不显示任何信息。
-R/-r 此参数的效果和指定“-d recurse”参数相同。
-s 不显示错误信息。
-v 反转查找。
-w 只显示全字符合的列。
-x 只显示全列符合的列。
-y 此参数效果跟“-i”相同。
-o 只输出文件中匹配到的部分。
将json输出格式化
python -m json.tool
tcpdump 参考样例
tcpdump -p -i bond5 '((port 6610) and (tcp[(tcp[12]>>2):4]=0x47455420))' -s 0 -w /tmp/GET.log
python调试命令
python -m pdb ftptest1.py
存放网卡信息目录
/etc/sysconfig/network-scripts/
系统报 bash: /dev/null: Permission denied 的解决方法
rm -rf /dev/null && mknod -m 0666 /dev/null c 1 3
wget重试机制
wget有一个自动重试机制。如果wget超过一定时长(默认是900秒),还没有返回值,那么wget会自动重试20次。
-t参数表示重试次数,例如需要重试100次,那么就写-t 100,如果设成-t 0,那么表示无穷次重试,直到连接成功
-T参数表示超时等待时间,例如-T 120,表示等待120秒连接不上就算超时。
邮件服务启动/停止
启动:/etc/init.d/postfix start
停止:/etc/init.d/postfix stop
重启:/etc/init.d/postfix restart
重新载入配置文件:/etc/init.d/postfix reload
rpm安装包操作命令
rpm -ivh readline-devel-5.2-141.16.x86_64.rpm
sys是指内核空间占用CPU的百分比
us — 用户空间占用CPU的百分比。
sy — 内核空间占用CPU的百分比。
ni — 改变过优先级的进程占用CPU的百分比
id — 空闲CPU百分比
wa — IO等待占用CPU的百分比
hi — 硬中断(Hardware IRQ)占用CPU的百分比
si — 软中断(Software Interrupts)占用CPU的百分比
手动执行脚本可以,而定时任务执行脚本不行,解决方法
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
或者
source /etc/profile
删除空行
sed -e '/^$/d'
去除前后空格
sed 's/^[ \t]*//g' | sed 's/[ \t]*$//g'
ifconfig添加ip,删除ip
ifconfig eth0 192.168.1.102 netmask 255.255.255.0 给网卡配ip
ip addr del 192.168.1.102 dev eth4 删除网卡ip
改变ftp端口号的方法
编辑/etc/vsftpd/vsftpd.conf,增加listen_port=2121
编辑 /etc/services 文件,将其中的
ftp 21/tcp 改为 ftp 2121/tcp
ftp 21/udp 改为 ftp 2121/udp
执行 service vsftpd restart 重新启动 vsftpd 服务
进程追踪命令,可用于判断进程是否僵死
strace -p PID
mysql进入数据库命令
mysql -hlocalhost -uroot -p'xxx'
启停网卡命令
ifconfig eth1 10.47.235.71/24 up/down
加路由命令
linux下
route add -net 1.1.0.0 netmask 255.255.0.0 gw 1.1.1.1
route add -net 1.0.0.0 netmask 255.0.0.0 gw 1.1.1.1
route add -net 1.1.0.0 netmask 255.255.0.0 gw 1.1.1.1
route add default gw 2.2.2.2
windows加路由命令:
route ADD 1.1.0.0 MASK 255.255.0.0 1.1.1.1
route ADD 1.1.0.0 MASK 255.255.0.0 1.1.1.1 -p(-p表示永久,这样重启后,也可以用)
加网卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth1
vi ifcfg-eth1
ifup eth1
linux环境下,python脚本头
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Python sftp模块安装记录
1、setuptools-24.0.2
python setup.py build && python setup.py install
2、pycrypto-2.6.1
python setup.py build && python setup.py install
3、ecdsa-0.13
python setup.py build && python setup.py install
4、paramiko-1.13.0
python setup.py build && python setup.py install
linux下lua5.1安装
(1)准备三个安装包:
lua-5.1.tar.gz
readline-devel-5.2-141.16.x86_64.rpm
(2)安装readline-devel-5.2-141.16.x86_64.rpm
rpm -ivh readline-devel-5.2-141.16.x86_64.rpm
(3)进入lua-5.1,安装lua
make linux test
make install
linux 下 nginx安装
tar -zxv -f nginx-1.10.1.tar.gz
cd nginx-1.10.1/
./configure
make && make install
cd /usr/local/nginx/sbin
./nginx -------->启动nginx
ps -ef | grep nginx
pkill -9 nginx -------->终止nginx
utc时间和本地时间区别
整个地球分为二十四时区,每个时区都自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。UTC与格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同。在本文中,UTC与GMT含义完全相同。
北京时区是东八区,领先UTC八个小时,在电子邮件信头的Date域记为+0800。如果在电子邮件的信头中有这么一行:
Date: Fri, 08 Nov 2002 09:42:22 +0800
说明信件的发送地的地方时间是二○○二年十一月八号,星期五,早上九点四十二分(二十二秒),这个地方的本地时领先UTC八个小时(+0800, 就是东八区时间)。电子邮件信头的Date域使用二十四小时的时钟,而不使用AM和PM来标记上下午。
以这个电子邮件的发送时间为例,如果要把这个时间转化为UTC,可以使用一下公式:
UTC + 时区差 = 本地时间
时区差东为正,西为负。在此,把东八区时区差记为 +0800,
UTC + (+0800) = 本地(北京)时间 (1)
那么,UTC = 本地时间(北京时间))- 0800 (2)
0942 - 0800 = 0142
即UTC是当天凌晨一点四十二分二十二秒。如果结果是负数就意味着是UTC前一天,把这个负数加上2400就是UTC在前一天的时间。例如,本地(北京)时间是 0432 (凌晨四点三十二分),那么,UTC就是 0432 - 0800 = -0368,负号意味着是前一天, -0368 + 2400 = 2032,既前一天的晚上八点三十二分。
纽约的时区是西五区,比UTC落后五个小时,记为 -0500:
UTC + (-0500) = 纽约时间 (3)
UTC = 纽约时间 + 0500 (4)
把(2)式 - (4)式相比较,
UTC = 北京时间 - 0800 = 纽约时间 + 0500 (5)
即 北京时间 = 纽约时间 + 1300 (6)
即北京时间领先纽约时间十个小时,由(6)式,
纽约时间 = 北京时间 - 1300 (7)
在四月下旬,纽约又换用夏令时,又称为日光节约时,比标准纽约时间提前一个小时,实际成为西四区的标准时间,成为 -0400。
UTC + (-0400) = 纽约夏令时,套用以上公式,
北京时间 = 纽约夏令时 + 1200
纽约夏令时 = 北京时间 - 1200
在这些转换中,最重要的公式就是
UTC + 时区差 = 本地时间
时区差东为正,西为负。例如,东八区(北京是 +0800,西五区(纽约)是-0500,加州是西八区,是-0800,美国中部时区是西六区,-0600,美国山地时区是西七区,-0700,太平洋时区是西八区,-0800,在夏天使用夏时制,成为-0700。德国时区是东一区,+0100,夏天变为+0200。
多数电子邮件程序,例如Outlook Express,在显示时间时,计算机程序把时间先转换成为本地时间再显示,例如,邮件的Date域为:
Date: Fri, 08 Nov 2002 09:42:22 +0800
top命令详解
host-1-1-1-1:~ # top
top - 10:59:23 up 20:34, 8 users, load average: 30.11, 26.39, 26.30
当前时间 |系统运行时间,时:分 |当前登陆用户数 |系统负载 1分钟 5分钟 15分钟
Tasks: 581 total, 3 running, 578 sleeping, 0 stopped, 0 zombie
进程总数 |正在运行的进程数 | 睡眠的进程数 | 停止的进程数 | 僵尸进程数、
Cpu(s): 8.4%us, 4.7%sy, 0.0%ni, 43.1%id, 42.8%wa, 0.0%hi, 1.0%si, 0.0%st
用户空间占用cpu的百分比 |内核空间占用cpu的百分比 | 用户空间
Mem: 128334M total, 124773M used, 3561M free, 64M buffers
Swap: 0M total, 0M used, 0M free, 76228M cached
gdb使用
1、gdb 可执行文件名
2、带参数调试时:set args Teld
nginx如何搭建源站
location ^~ /play/ {
alias /home/video/;
}
修改系统时区
修改系统时区:
TZ='Asia/Shanghai'; export TZ
Linux下查看域名解析服务器地址
[root@xxx ~]# cat /etc/resolv.conf
nameserver *.*.*.*