linux shell常用命令总结

1.uname -a 查看服务器位数
2.ifconfig linux 查看ip windows下 是ipconfig

3.ps -aux 中STAT的含义

D 不可中断 Uninterruptible(usually IO)
R 正在运行,或在队列中的进程
S 处于休眠状态
T 停止或被追踪
Z 僵尸进程
W 进入内存交换(从内核2.6开始无效)
X 死掉的进程
S+说明程序在后台运行,位于后台的进程组
4.shell wget php fopen

5.
sar -u 2 10                  -- 即每隔2秒检察一次,共执行20次。
du -h --max-depth=1  
du -sh /root 只显示目录大小总和
6.改变目录权限 chown auto_analtmp_user:auto_analtmp_user ./project


7.rz sz  命令上传下载文件 freebsd 是lrz lsz


8./usr/local/sbin/proftpd  不同类型ftp重启不一样

9.vipw 更改ftp账号目录,freebsd不能用这个方法

10.sort
sort |uniq -c | sort -nr|head -20

gzip 1.txt 压缩文件
gzip -c filename >filename.gz
gunzip 1.gz 解压文
gunzip –c filename.gz > filename

tar 可以把很多文件和目录打包
tar -czf all.tar.gz *.jpg
tar -zcf games.tgz /deal/getAndroidInfo/resultDir/games 将目录压缩打包
tar -xzf games.tgz
11.四则运算
index=`expr ${index} + 1`

sinaAllPV=$(($sinaAllPV+$DPV))

12.获取本地ip
LOCAL_IP=`ifconfig | awk '/inet/{print $2;exit}'`
13.
find
find ./ -type f | xargs ls |wc -l  不会出现 bash: /bin/ls: Argument list too long
find ./ -name "*" | xargs cat | awk -F'\t' '{if($3~/^http:\/\/live.video.sina.com.cn\/room\/nba/){print substr($1,1,10)}}' | sort | uniq -c
find ./auto_newshome/  -name "clickstream.20120212*" -type f |xargs mv --target-directory=/data4/etl_tmp_bak/${domainName};
删除历史文件:find ${workDir}/* -mtime +15 -type f -exec rm -rf {} \;

find /download/logs/  -name "*.gz" -mtime +15 -type f -exec rm -rf {} \;
find /usr/local/website/ky_transfer_hotsearch_word/files/statistic/  -name "*.txt" -mtime +15 -type f -exec mv {} /download/bak/jiangfeng_result/ \;

14.ftp 账号要注意跟文件的权限问题

15.cat -A 能看到文件全部
16.dos2unix 1.txt 将文件转化成unix格式
vi 看到文件里的^M,可以用tr -d "\015"
17.符号链接ln
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
-f 建立时,将同档案名删除.
ln -s abc cde 建立abc 的软连接
ln abc cde 建立abc的硬连接
18.while do
        while [ ${PSNUM} -gt 6 ]
        do
                sleep 10
                PSNUM=`ps axuw|grep sort_singer_uvuip.sh | grep -v "grep" | wc -l`
        done

19.:%s/old/new/g vi 替换命令
20.lp 是打印的意思
21.shell 选项传参示例
while getopts :UCDPAh:u:p:r:l:b:t:f: OPTION
do
case ${OPTION} in
h)
  REMOTE_IP=${OPTARG}
  ;;
u)
  USER=${OPTARG}
  ;;
p)
  PSWD=${OPTARG}
  ;;
r)
  REMOTE_DIR=${OPTARG}
  ;;
l)
  LOCAL_DIR=${OPTARG}
  ;;
b)
  BACKUP_DIR=${OPTARG}
  ;;
t)
  FILE_TYPE=${OPTARG}
  ;;
f)
  FILE_LIST=${OPTARG}
  ;;
U)
  METHOD="upload"
  ;;
D)
  METHOD="download"
  ;;
P)
  CONN_MODE="passive on"
  ;;
A)
  TRAN_MODE="ascii"
  ;;
C)
  CLEAN="true"
  ;;
\?)#show usage
  error "${PS_FULLNAME} -[U(pload) D(ownload)] -[C(lean)] -[P(assive)] -[A(scii)] -[h host] -[u user] -[p password] -[r remote path] -[l local path] -[b backup path] -[t filetype] -[f file list]."
  ;;
esac
done
22.grep -v 是匹配不包含的所有行,-i不区分大小写搜索。

23.shell export 是变量输出,可以在子进程中使用该变量,既系统变量,export a=1,declare声明变量数据类型,例如declare -i x是将x声明成整形数,declare -a x将x声明成数组类型,declare -x a 是将a设置成环境变量,source Filename,也称为点命令 ,在当前bash环境下读取并执行Filename命令
24.unset 可以销毁变量
25.type 显示指定命令的类型,-a显示所有可能的类型,-p只返回外部命令,相当于which
26.&&命令表示顺序执行由它连接的命令,但是只有它之前的命令成功执行完成了之后才可以继续执行它后面的命令
27.seq 1 10 产生1到10的递增数
28.for ((i=1;i<=10;i++));do echo $i done
   for i in {1..10}
   do
   echo $i
   done
29.linux 怎么手动清空缓存?
30。新建组和新建用户 groupadd hadoop
     useradd -d /home/hadoop -m hadoop -g hadoop
     修改用户密码 passwd liping
31.shell 中的and 和or
if [ 条件判断一 ] && (||) [ 条件判断二 ]; then
32.判断之前一条语句是否执行成功
if [[ "$?" -eq 0 ]] ; then
    echo "$1 succeful!"
    exit 0;
fi
33.yum install sendmail

34.hostname localhost 手动设置hostname
35.rsync比scp靠谱的多
rsync -vzrtopg --progress --ignore-errors "-e ssh -p 22222" [email protected]:/download1/newlog/2013/05/07/access_log-20130507.tar.gz .
36.ifdown eth0 关闭网卡接口
37.vi 文本替换 :%s/old/new/g
38.iptraf -g 查看linux实时下载情况
http://blog.chinaunix.net/uid-272339-id-28464.html
39.vi /var/log/maillog查看服务运行日志
40.sudo用法
sudo -u hadoop ${hadoopBinDir}/hadoop fs -mkdir -p /input/selfLog/${dir}
sudo 在定时任务里不好用,su - hadoop -c "${hadoopBinDir}/hadoop fs -mkdir -p /input/selfLog/${dir}"在定时任务里好用。

41.修改开机启动项
vi /etc/rc.local
42.uniq -c 排重
43.同步时间
59 * * * * /usr/sbin/ntpdate time.windows.com > /dev/null 2 > &1
60.linux 查看用户登录时间表,last |head
61.shell记日志
   fileName=`basename $0`
   log(){
        echo -e `date +"%Y-%m-%d %H:%M:%S"`"\t"$1"\t"$2>>${logDir}/$fileName".log"
   }
62.if else if else
if [ "$1" = "hello" ] ; then
echo "hello!"
elif [ "$1" = ""  ]; then
echo " no parameter"
else
echo "only hello "
fi
63.lzop 压缩文件的时候不用加-9 -2 什么的,加了文件压缩率没有什么提高,但是慢了很多。

64.service iptables status 如果防火墙关闭,会显示关闭,不关闭会显示三张表的配置状态。
65.shell 某日期多少天前日期,aWeekAgo_date=`date -d "20110228 -7 days" "+%Y%m%d"`
66.secucrt 设置长连接的方法。
http://hi.baidu.com/tonidfrank/item/1249fdc3d3a11ac7994aa04f
“终端”->“发送协议”
67.用u盘直接从linux服务器拷贝数据:
用fdisk -l 来查看盘的情况
如果是fat格式的U盘,挂载命令:mount  -t  vfat  /dev/sdb1  /mnt/udisk
如果是ntfs格式的U盘,挂载命令:mount  -t  ntfs-3g  /dev/sdb1  /mnt/udisk

如果没有/mnt/udisk文件夹,可以创建一个mkdir /mnt/udisk
但是注意,ntfs格式要挂载的话,需要下载一个ntfs-3g-2011.4.12-5.el5.i386.rpm包,安装一下
umount /mnt/udisk
68.fsck 系统修复工具
69.ubuntu中sudo apt-get install ** 如果提示  未发现软件包,
需要执行sudo apt-get update
70.shutdown -h now  立刻关机(root用户使用)
shutdown -h 10 10分钟后自动关机
poweroff
init 0为关机﹐init 1为重启

71./etc/fstab 下是分区信息
72。解决excel打开utf8中文乱码
iconv -f utf8 -t unicode -c  2013-06-24_安装统计明细表_android_test_iconvert.xls >  2013-06-24_安装统计明细表_android_test_iconvert_new.xls
-c 是忽略不识别的字符。
73.清空系统内存cache
echo 3 > /proc/sys/vm/drop_caches
查看内存情况
74.查看端口情况
netstat -nat | grep 10000
查看端口占用进程
netstat -anp|grep LISTEN|grep "10001"
75.设置ip
vi /etc/sysconfig/network-scripts/ifcfg-eth0


DEVICE=eth0
BOOTPROTO=none
NETMASK=255.255.255.0
TYPE=Ethernet
HWADDR=00:22:19:54:da:cc
IPADDR=192.168.1.99
GATEWAY=192.168.1.1
DNS1=211.157.15.189
IPV6INIT=no
ONBOOT=yes
USERCTL=no
76.
8.8.8.8是google的公用dns解析服务。
4.4.4.4
114.114.114.114
77.nohup退出客户端后程序继续在后台运行
  &退出客户端后程序就停止了
78.sendmail 开始不能使用,第二天自己可以用了。
79.ssh 执行远程命令
ssh -p 22 [email protected] '/bin/sh /home/chaobo/selfLog/bin/statSelfLog_everyday.sh'
80.shell中数组的应用
#!/bin/sh
ip_array=("192.168.1.1" "192.168.1.2" "192.168.1.3")
for ip in ${ip_array
  • }
  • do
            echo $ip
    done
    81.在命令行中用php得到周信息
    a=`php -r "date_default_timezone_set('PRC');echo  date('W',strtotime('2013-06-23'));"`
    82.iconv -f utf8 -t unicode 比较好用 -t gbk有时不好用。
    83.gbk是gb2312的子集。
    84.gzip -c 1.txt>1.gz
    85.修改hostname
    vi /etc/sysconfig/network
    86.磁盘块大小跟文件块大小是两回事。
    87.磁盘容量单位
    K,M,G,T,P,E,Z
    88.POSIX可移植操作系统界面
    89.通过使用hadoop的Fuse-DFS功能模块,任意一个hadoop文件系统(不过一般为HDFS)
    均可以作为一个标准的文件系统进行挂载。随后便可以使用Unix工具(如ls和cat)与该文件系统进行交互。
    还可以通过任意一种编程语言调用POSIX库来访问文件系统。
    90.RAID是廉价磁盘冗余阵列,Redundant Array of Inexpensive Disks的缩写。
    91.Linux的bg和fg命令
    http://hi.baidu.com/dashi6174/item/e85dcc321336c9c12f8ec21c
    92.history 可以查看历史执行过的命令。
    93.getopts
    94.等号两边不能带空格,带空格会当成命令来执行。
    95.shell中if后边的then不能写成大写,大写会报错。
    96.ls按文件大小排序
    ll -S | grep '^[^d]'
    97.crontab
    http://www.cnblogs.com/jiafan/articles/1153066.html
    98.ubuntu下安装应用
    sudo apt-get install node
    99.用awk获取mysql中邮件列表的方法(小数据量的计算尽量在内存中,而不要写到磁盘中,速度的差别太大了)
    SQL="select status,email from d_kystt_connect_info_copy where status!=-1 and programme='ky_pc'"
    res=`${MYSQLEXE} -h ${DBHOST} ${DBNAME} -N -e "${SQL}"`
    allEmails=`echo $res|awk '{split($0,arr," ");for(i=1;i<=length(arr);i++){if(i%2==1){if(arr[i]==0){str=str" -c "arr[i+1];}else if(arr[i]==1){toEmail=arr[i+1];}}}}END{print str"==="toEmail}'`
    receiver=`echo -e $allEmails|awk -F"===" '{print $2}'`
    copyToEmails=`echo -e $allEmails|awk -F"===" '{print $1}'`
    echo $copyToEmails
    echo $receiver
    title='test'
    echo '此附件为服务器自动发送'|mutt  ${receiver} -s ${title} -a ${endResultDir}/${yesterday_formate}_${chinesename}.xls ${copyToEmails}
    100.shell执行过程中接受用户输入
    #!/bin/sh
    # test
    echo -n "are you sure to delete these files?"
    read ANS
    case $ANS in
    y|Y|yes|Yes)
            rm a.txt
             ;;
    n|N|no|No)
            exit 0
             ;;
    esac
    101.
    sed 取文件某行
    sed -n '3P' /home/chaobo/ip/stt_ip_dist_new.txt|awk -F'\t' '{for(i=1;i<=NF;i++){print i":"$i}}'
    102.与CRTL+Z有关
    http://hi.baidu.com/cznanjibing/item/efd1eeac8b0f863e020a4ddb
    jobs -l
    kill %1
    103.shell 整除运算
    if [ $(($year%100)) -eq 0 ]
    104.shell中月中日的处理(闰年、月)
    if [ $month = '01' ] || [ $month = '03' ] || [ $month = '05' ] || [ $month = '07' ] || [ $month = '08' ] || [ $month = '10' ] || [ $month = '12' ]
    then
            endDay='31'
    elif [ $month = '02' ]
    then
            if [ $(($year%100)) -eq 0 ]
            then
                    if [ $(($year%400)) -eq 0 ]
                    then
                            endDay='29'
                    else
                            endDay='28'
                    fi
            else
                    if [ $(($year%4)) -eq 0 ]
                    then
                            endDay='29'
                    else
                            endDay='28'
                    fi
            fi

    else
            endDay='30'
    fi
    echo 'endDay:'${endDay}

    for day in `awk -v endDay=${endDay} 'BEGIN{for(i=1;i<=endDay;i++){if(i<=9){i="0"i}str = str""i" "}print str}'`
    105.vi使用
    D删除光标到行尾的字符
    dG删除光标到文件尾
    106.tail -f 可用于监控另一个进程正在写入文件的增长。
    107.shell执行mysql

    MYSQLEXE="/usr/bin/mysql -uroot -p123456"
    confDir='/home/chaobo/selfLog/conf'
    dbConf="${confDir}/dbConf/d_stat_platform_131"
    DBNAME=`cat ${dbConf}|awk -F'===' '{split($4,arr,":");print arr[2]}'`
    echo $DBNAME
    DBHOST=`cat ${dbConf}|awk -F'===' '{split($1,arr,":");print arr[2]}'`
    echo $DBHOST
    DBUSER=`cat ${dbConf}|awk -F'===' '{split($2,arr,":");print arr[2]}'`
    echo $DBUSER
    DBPWD=`cat ${dbConf}|awk -F'===' '{split($3,arr,":");print arr[2]}'`
    echo $DBPWD
    MYSQLEXE="/usr/bin/mysql -u${DBUSER} -p${DBPWD}"


    SQL="select status,email from d_kystt_connect_info where status!=-1 and programme='ky_pc' and indexName='bubble' or status=1"
    allReceivers=`${MYSQLEXE} -h ${DBHOST} ${DBNAME} -N -e "${SQL}"|awk -F'\t' 'BEGIN{str=""}{if($1==0){str=str" -c "$2}}{if($1==1){receiver=$2}}END{print receiver"|"str}'`
    receiver=`echo $allReceivers|awk -F'|' '{print $1}'`
    copyToEmails=`echo $allReceivers|awk -F'|' '{print $2}'`
    echo -e "气泡点击到URL次数:${num}\n\n此附件为服务器自动发送"|mutt  ${receiver} -s ${title} ${copyToEmails}


    DBNAME="kystt"
    DBHOST="192.168.110.191"
    MYSQLEXE="/usr/bin/mysql -uroot -p123456"
    SQL="select * from d_kystt_connect_info limit 10"
    ${MYSQLEXE} -h ${DBHOST} ${DBNAME} -N -e "${SQL}" >/home/chaobo/test/test.txt
    108.curl 用get方式的话,&符得转义。
    109.while read
    110.查看端口占用进程
    lsof -i:10001
    111.lsof(list open file)
    112.获取本地出口ip
    curl http://iframe.ip138.com/ic.asp
    113.chkconfig 设置防火墙,重启也不会失效。
    114.rpm -ivhU lzo-2.04-1.el5.rf.i386.rpm 更新安装
    115.rpm
    http://hi.baidu.com/bluejack/item/bf74c317ead71424f6625c83

    116.yum
    yum remove 卸载

    你可能感兴趣的:(Linux shell)