linux shell常用记录

以下是我经常用到又经常忘记的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 *.*.*.*

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值