#20170804 查看正在访问某文件/目录进程####################################### fuser /path/to/file(dir) sudoers####################################### # cat /etc/sudoers.d/usr01 Cmnd_Alias DENYCMD = !/usr/bin/passwd,!/usr/bin/passwd root,!/bin/vi /etc/sudoers,!/usr/bin/vim /etc/sudoers,!/usr/sbin/visudo,!/bin/vi /etc/ssh/*,!/usr/bin/vim /etc/ssh/*, !/bin/chmod 777 /etc/*,!/bin/chmod 777 *,!/bin/chmod 777,!/bin/chmod -R 777 * Cmnd_Alias DENYRMCMD = !/bin/rm /*,!/bin/rm /,!/bin/rm -rf /,!/bin/rm -rf /*,!/bin/rm /etc,!/bin/rm -r /etc,!/bin/rm -rf /etc,!/bin/rm /etc/*,!/bin/rm -r /etc/*,!/bin/rm -rf /etc/*,!/bin/rm /root,!/bin/rm -r /root,!/bin/rm -rf /root,!/bin/rm /root/*,!/bin/rm -r /root/*,!/bin/rm -rf /root/*,!/bin/rm /bin,!/bin/rm -r /bin,!/bin/rm -rf /bin,!/bin/rm /bin/*,!/bin/rm -r /bin/*,!/bin/rm -rf /bin/* Cmnd_Alias DENYSUDOI = !/usr/bin/sudo -i,!/bin/su *root*,!/bin/bash,!/bin/sh,!/bin/tcsh usr01 ALL=(ALL) NOPASSWD: ALL,DENYCMD,DENYRMCMD,SUDOI sudo命令白名单 Cmnd_Alias PERMIT = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool, /bin/rpm,/usr/bin/up2date, /usr/bin/yum, /sbin/service, /sbin/chkconfig, /sbin/fdisk, /sbin/sfdisk,/sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount, /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall Cmnd_Alias SU = /bin/su,!/bin/su *root* Cmnd_Alias CHMOD = !/bin/chmod 777 *,!/bin/chmod -R 777 * Cmnd_Alias RM = !/bin/rm /*,!/bin/rm /,!/bin/rm -rf /,!/bin/rm -rf /*,!/bin/rm /etc,!/bin/rm -r /etc,!/bin/rm -rf /etc,!/bin/rm /etc/*,!/bin/rm -r /etc/*,!/bin/rm -rf /etc/*,!/bin/rm /root,!/bin/rm -r /root,!/bin/rm -rf /root,!/bin/rm /root/*,!/bin/rm -r /root/*,!/bin/rm -rf /root/*,!/bin/rm /bin,!/bin/rm -r /bin,!/bin/rm -rf /bin,!/bin/rm /bin/*,!/bin/rm -r /bin/*,!/bin/rm -rf /bin/* bmdba ALL=(ALL) NOPASSWD: PERMIT,SU,CHMOD,RM sudo命令黑名单 Cmnd_Alias DENYSUROOT = !/bin/bash,!/bin/sh,!/bin/tcsh,!/usr/sbin/visudo,!/bin/su *root* Cmnd_Alias DENYVI = !/usr/bin/vim,!/bin/vi,!/bin/echo Cmnd_Alias DENYCMD = !/usr/bin/passwd,!/usr/bin/passwd root,!/bin/chmod 777 /etc/*,!/bin/chmod 777,!/bin/chmod 777 *,!/bin/chmod -R 777 * Cmnd_Alias DENYRMCMD = !/bin/rm /*,!/bin/rm /,!/bin/rm -rf /,!/bin/rm -rf /*,!/bin/rm /etc,!/bin/rm -r /etc,!/bin/rm -rf /etc,!/bin/rm /etc/*,!/bin/rm -r /etc/*,!/bin/rm -rf /etc/*,!/bin/rm /root,!/bin/rm -r /root,!/bin/rm -rf /root,!/bin/rm /root/*,!/bin/rm -r /root/*,!/bin/rm -rf /root/*,!/bin/rm /bin,!/bin/rm -r /bin,!/bin/rm -rf /bin,!/bin/rm /bin/*,!/bin/rm -r /bin/*,!/bin/rm -rf /bin/* linux获取自己的外网IP####################################### curl ifconfig.me curl icanhazip.com curl ident.me curl ipecho.net/plain curl whatismyip.akamai.com curl myip.dnsomatic.com curl http://ip.3322.net disk io 测试####################################### 磁盘写速度测试: # sync;/usr/bin/time -p bash -c "(dd if=/dev/zero of=test.dd bs=1M count=20000)" 20000+0 records in 20000+0 records out 20971520000 bytes (21 GB) copied, 185.653 s, 113 MB/s real 185.66 user 0.01 sys 20.99 腾讯云cfs写速度 # sync;/usr/bin/time -p bash -c "(dd if=/dev/zero of=/tx_cfs/test.dd bs=1M count=20000)" 20000+0 records in 20000+0 records out 20971520000 bytes (21 GB) copied, 436.983 s, 48.0 MB/s real 436.98 user 0.01 sys 11.98 磁盘读速度测试: # echo 3 > /proc/sys/vm/drop_caches && /usr/bin/time -p dd if=test.dd of=/dev/null bs=1M 20000+0 records in 20000+0 records out 20971520000 bytes (21 GB) copied, 224.633 s, 93.4 MB/s real 224.76 user 0.06 sys 11.75 腾讯云cfs读速度 echo 3 > /proc/sys/vm/drop_caches && /usr/bin/time -p dd if=/tx_cfs/test.dd of=/dev/null bs=1M 20000+0 records in 20000+0 records out 20971520000 bytes (21 GB) copied, 278.183 s, 75.4 MB/s real 278.29 user 0.05 sys 8.82 awk []就是分隔符####################################### # cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never [root@VM_35_216_centos ~]# cat /sys/kernel/mm/transparent_hugepage/enabled | awk -F [][] '{print $2}' always ssh连接IP白名单####################################### AllowUsers root@183.21.89.249 ansible sudo to root####################################### # bruce用户身份,sudoing到root用户 ansible all -m ping -u bruce --sudo echo颜色####################################### echo -e "some text \033[31m red \033[0m" echo -e "some text \033[32m green \033[0m" sed过滤替换####################################### # cat sedtest naughty is a girlgirl 03.cc is a girl girlgirl is naughty [root@node0 tmp]# sed -i "/^naughty/c\\naughty is a girl" sedtest [root@node0 tmp]# cat sedtest naughty is a girl 03.cc is a girl girlgirl is naughty shell脚本编辑文件&&vimrc####################################### cat << EOF > /root/.vimrc set ts=4 set expandtab set smartindent set history=10000 autocmd BufNewFile *.sh exec ":call SetTitle()" func SetTitle() if &filetype == 'sh' call setline(1,"\##########################################################") call append(line("."), "\# File Name: ".expand("%")) call append(line(".")+1, "\# Author: YOUR_NAME") call append(line(".")+2, "\# Mail: YOUR_EMAIL@mail.com") call append(line(".")+3, "\# Created Time: ".strftime("%c")) call append(line(".")+4, "\##########################################################") call append(line(".")+5, "\#!/bin/bash") call append(line(".")+6, "") call append(line(".")+7, "\#Write Log") call append(line(".")+8, "log(){") call append(line(".")+9, "\treturn") call append(line(".")+10, "}") call append(line(".")+11, "") call append(line(".")+12, "\#Shell Usage") call append(line(".")+13, "usage(){") call append(line(".")+14, "\treturn") call append(line(".")+15, "}") call append(line(".")+16, "") call append(line(".")+17, "\#shell_lock()") call append(line(".")+18, "lock(){") call append(line(".")+19, "\treturn") call append(line(".")+20, "}") call append(line(".")+21, "") call append(line(".")+22, "\#shell_unlock()") call append(line(".")+23, "unlock(){") call append(line(".")+24, "\treturn") call append(line(".")+25, "}") call append(line(".")+26, "") endif endfunc autocmd BufNewFile * normal G EOF 创建普通用户并分配root权限####################################### 不要这个 useradd admin && \ echo '*0+m&djD5oo' | passwd --stdin admin && \ echo 'admin ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers 新添加用户并添加公钥####################################### 有问题: useradd seentech;mkdir /home/seentech/.ssh;cd /home/seentech/.ssh;vim authorized_keys 没问题: useradd seentech && mkdir /home/seentech/.ssh && cd /home/seentech/.ssh && vim authorized_keys 服务器公网IP禁ping####################################### iptables -A INPUT -d 122.13.72.237 -p icmp --icmp-type 8 -s 0/0 -j DROP 判断软件是否安装####################################### rpm -qa zabbix-agent | grep -q "zabbix-agent" && echo "dont install" || echo "install it" 脚本加锁####################################### LOCKFILE=/tmp/`basename $0`.lock [ -f $LOCKFILE ] && trap "echo $LOCKFILE exist,bye!" EXIT || touch $LOCKFILE 删除指定目录开头####################################### /bin/rm -rf routerData[3-9]* git代码####################################### cd /path/to/web_site_dir su wwwww git clone git@git.100msh.com:liuchengchi/100msh_keyuan2.git ./ git pull 调试shell脚本时可以加入这个暂停####################################### read -t 30 -p "scripts $1 go on after 30s, Ctrl+C will stop script" #echo $REPLY find定时删日志文件####################################### find /usr/local/remotemysql -name "*log*CNGZ01PL0005*" -mtime +4 -exec /bin/rm -f {} \; 强制踢用户下线####################################### whoami 查看自己用户名 who 查看所有用户和访问者IP who am i 查看自己tty pkill -kill -t pts/1 把pts/1对应用户踢下线 awk示例####################################### 命令行选项 -F"[@ /t]" 告诉awk @, 空格和Tab都是字段分隔符,例如: awk -F"[@ /t]" '{print $2,$3}' test 以@,空格,Tab键分割test文件的每一行,并输出第二、第三列。 awk '$2~/^(126|yahoo)/{print $2, $3}' test 如果改行的第二个字段以"123"或"yahoo"开始,则输出改行的第二、第三列。 awk '$1~/[0-9][0-9]$/{print $1, $3}' test 如果改行的最后两个字段以数字结束,则输出改行的第一、第三列。 awk '/mail/{print $0}' test 输出test文件中含有"mail"字符串的行 awk '$2~/mail/{print $0}' test 输出test文件中第二个字段含有"mail"字符串的行 awk '$2 == "gmail.com"{$1 = "ggg";print}' test 输出test文件中第二个字段是"gmail.com"的行,并把改行第一列改为"ggg" awk '$2 == "gmail.com"{$1 = "ggg"}{print}' test 输出test文件中所有行,并且如果第二个字段是"gmail.com",把改行第一列改为"ggg" awk '{IGNORECASE=1;if($2 ~/^[a-z]/&& $2~/net$/){print $0}}' test 打开test文件,忽略字母大小写,如果第二字段以[a-z]开头,并以"net"结尾,则输出该行。 if的示例####################################### if [ ! -d /data/svn/$1 ];then echo "something" exit fi if [ $# -eq 0 ];then echo "something" fi 注释多行####################################### 光标移到需要注释的第一行 Ctrl+V J向下移动(K向上移动) Shift+I Shift+# ESC 重定向####################################### cmd >a 2>a 和 cmd >a 2>&1 为什么不同? cmd >a 2>a :stdout和stderr都直接送往文件a ,a文件会被打开两遍,由此导致stdout和stderr互相覆盖。 cmd >a 2>&1 :stdout直接送往文件a ,stderr是继承了FD1的管道之后,再被送往文件a 。a文件只被打开一遍,就是FD1将其打开, 所以会效率比前者更高。 apache、nginx、php、mysql 编译参数查询####################################### nginx编译参数查看:/usr/local/nginx/sbin/nginx -V apache编译参数查看:cat /usr/local/apache2/build/config.nice mysql编译参数查看:cat /usr/local/mysql/bin/mysqlbug | grep CONFIGURE_LINE php编译参数查看:/usr/local/php/bin/php -i | grep configure awk参考示例####################################### $cat student-marks Jones 2143 78 84 77 Gondrol 2321 56 58 45 RinRao 2122 38 37 Edwin 2537 87 97 95 Dayan 2415 30 47 1. Awk If Example: Check all the marks are exist $ awk '{ if ($3 =="" || $4 == "" || $5 == "") print "Some score for the student",$1,"is missing";' }' student-marks Some score for the student RinRao is missing Some score for the student Dayan is missing 2. Awk If Else Example: Generate Pass/Fail Report based on Student marks in each subject $ awk '{ if ($3 >=35 && $4 >= 35 && $5 >= 35) print $0,"=>","Pass"; else print $0,"=>","Fail"; }' student-marks Jones 2143 78 84 77 => Pass Gondrol 2321 56 58 45 => Pass RinRao 2122 38 37 => Fail Edwin 2537 87 97 95 => Pass Dayan 2415 30 47 => Fail 3. Awk If Else If Example: Find the average and grade for every student $ cat grade.awk { total=$3+$4+$5; avg=total/3; if ( avg >= 90 ) grade="A"; else if ( avg >= 80) grade ="B"; else if (avg >= 70) grade ="C"; else grade="D"; print $0,"=>",grade; } $ awk -f grade.awk student-marks Jones 2143 78 84 77 => C Gondrol 2321 56 58 45 => D RinRao 2122 38 37 => D Edwin 2537 87 97 95 => A Dayan 2415 30 47 => D 4. Awk Ternary ( ?: ) Example: Concatenate every 3 lines of input with a comma. $ awk 'ORS=NR%3?",":"\n"' student-marks Jones 2143 78 84 77,Gondrol 2321 56 58 45,RinRao 2122 38 37 Edwin 2537 87 97 95,Dayan 2415 30 47, awk变量,if,and####################################### awk -v name='access.wifiauth_hb-v1.1.gz.100msh.com.log' -vcode=200 '{if($1==name && $2==code) print $0}' nginx_log_stats.txt logstats####################################### logfile=/data001/data/logs/nginx/access.wifiauth_hb-v1.1.gz.100msh.com.log tail -n 1000 $logfile | awk -v name=`basename $logfile` '{a[$10]++}END { for(i in a) print name,i,a[i] }' date显示多少天前####################################### date -d "3 day ago" +%Y%m%d 以指定格式显示3天前的日期 date -d "1 month" +%Y-%m-%d 以指定格式显示一个月后的日期 date '+%H' 小时 #获取脚本的绝对路径####################################### scriptpath=$(readlink -f $0) #获取脚本的父目录 scriptdir=$(dirname $scriptpath) 上述命令合并:脚本当前目录 scriptdir=$(dirname $(readlink -f $0)) ansible分发定时任务和删除定时任务####################################### ansible nfauth -m service -a "name=zabbix-agent state=restarted" ansible nfauth[10-23] -m shell -a '/etc/init.d/zabbix-agent status' ansible all/192.168.83.104 -m cron -a 'name="ban IP of login" minute=* hour=*/2 day=* month=* weekday=* job="sh /data/x5online/ban_try_login_ip.sh"' ansible 192.168.83.104 -m cron -a "name="ban IP of login" state=absent" ansible bfauth -m shell -a 'mkdir -pv /data001/apps/php/etc/old_conf' ansible bfauth -m copy -a 'src=/root/bfauth20170615/php.ini dest=/data001/apps/php/etc' ansible bfauth -m cron -a 'name="clean cache" minute=15 hour=3 day=* month=* weekday=* job="bash /root/bin/freecache.sh"' [txzg] 119.29.142.189 ansible_ssh_port=18922 123.207.237.77 ansible_ssh_port=18922 123.207.44.192 123.207.45.148 119.29.158.156 /etc/ansible/hosts文件中可以使用的参数 ansible_ssh_host #用于指定被管理的主机的真实IP ansible_ssh_port #用于指定连接到被管理主机的ssh端口号,默认是22 ansible_ssh_user #ssh连接时默认使用的用户名 ansible_ssh_pass #ssh连接时的密码 ansible_sudo_pass #使用sudo连接用户时的密码,sudo无需密码时,无需此参数 ansible_sudo_exec #如果sudo命令不在默认路径,需要指定sudo命令路径 ansible_ssh_private_key_file #秘钥文件路径,秘钥文件如果不想使用ssh-agent管理时可以使用此选项ansible_shell_type #目标系统的shell的类型,默认sh ansible_connection #SSH 连接的类型: local , ssh , paramiko,在 ansible 1.2 之前默认是 paramiko ,后来智能选择,优先使用基于ControlPersist的ssh(支持的前提) ansible_python_interpreter #用来指定Python解释器的路径,默认为/usr/bin/python 同样可以指定ruby 、perl的路径 ansible_*_interpreter #其他解释器路径,用法和ansible_python_interpreter类似,这里"*"可以是ruby或才perl等其他语言 ssh禁用root用户登录,修改端口后,hosts文件设置和ansible命令 139.199.65.228 ansible_ssh_user=100msh_yunwei ansible_ssh_port=18922 ansible -i txall 139.199.65.228 --sudo -m shell -a 'touch /root/test.file' nginx日志滚动(官方)####################################### $ mv access.log access.log.0 $ kill -USR1 `cat master.nginx.pid` $ sleep 1 $ gzip access.log.0 awk if 变量####################################### tail -n 1000 /path/to/log_file | awk -v code=200 'BEGIN {count=0} {if($10==code){count=count+1;}} END{print code,count}' bash脚本PATH####################################### #!/bin/bash # export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin nginx访问日志监控####################################### tail -n 1000 /path/to/log_file | awk '{a[$10]++}END { for(i in a) print a[i],i | "sort -k1 -nr | head -n 10" }' 585 404 403 200 3 301 3 302 1 444 /etc/bashrc####################################### rmmv() { for i in $@ do mv -iv $i /data001/recycle/${i//\//_}-`date +%F%T` done } alias rm=rmmv sed的一些用法####################################### # echo 192-168-1-1 | sed 's/-/./g' 192.168.1.1 脚本加密工具shc####################################### #http://www.datsi.fi.upm.es/~frosal/sources/ tee用法####################################### echo 333 | tee -a /tmp/echo.txt 追加 echo 333 | tee /tmp/echo.txt 覆盖 awk不显示某列####################################### history | awk '{$1="";$2="";$3="";print $0}' 基本编译组件安装####################################### yum install gcc cpp glibc glibc-devel gcc-c++ 高并发内核参数####################################### 但在不同的虚拟化场景(KVM,XEN,VSPHERE)下,不一定存在以下参数 cd /proc/sys/net/ipv4/ [root]# cat tcp_max_syn_backlog 819200 [root]# cat tcp_fin_timeout 30 [root]# cat tcp_keepalive_time 60 [root]# cat tcp_synack_retries 2 [root]# cat tcp_syncookies 1 [root]# cat tcp_tw_recycle 1 [root]# cat tcp_tw_reuse 1 vi /etc/sysctl.conf net.ipv4.tcp_keepalive_time = 30 net.ipv4.tcp_keepalive_probes = 1 net.ipv4.tcp_keepalive_intvl = 1 date命令####################################### $ date +%F_%H:%M:%S 2017-06-01_12:57:47 更详细请查阅 http://www.cnblogs.com/xd502djj/archive/2010/12/29/1919478.html ssh连接超时时间的设置方法####################################### echo export TMOUT=1800 >> /etc/profile echo export TMOUT=900 >> /root/.bash_profile 禁用密码登录服务器####################################### 先配置密钥登录服务器!!!! 使用xshell等工具生成密钥对 拷贝公钥信息粘贴到 vim ~/.ssh/authorized_keys mkdir ~/.ssh chmod 700 ~/.ssh vi ~/.ssh/authorized_keys chmod 644 ~/.ssh/authorized_keys 【注意权限为644】 基于密钥认证的配置 查看/etc/ssh/sshd_config配置 PasswordAuthentication yes //把yes修改为no即禁用密码登录 #PubkeyAuthentication yes //密钥登录是注释默认是允许的,无需修改 测试: sed -n "s/^PasswordAuthentication yes/PasswordAuthentication no/p" /etc/ssh/sshd_config sed -n "s/^#PubkeyAuthentication yes/PubkeyAuthentication yes/p" /etc/ssh/sshd_config 修改配置: cp /etc/ssh/sshd_config{,_org} sed -i "s/^PasswordAuthentication yes/PasswordAuthentication no/" /etc/ssh/sshd_config sed -i "s/#PubkeyAuthentication yes/PubkeyAuthentication yes/" /etc/ssh/sshd_config egrep "^PasswordAuthentication|^PubkeyAuthentication" /etc/ssh/sshd_config 重载服务: /etc/init.d/sshd reload iptables配置端口转发####################################### 清空防火墙规则 /etc/init.d/iptables stop iptables -F iptables -X iptables -Z /etc/init.d/iptables save 检查配置文件/etc/sysconfig/iptables是否包含iptables规则 /etc/init.d/iptables start 只转向本地其他port iptables -t nat -I PREROUTING -p tcp -d 10.186.35.216 --dport 30000:40000 -j REDIRECT --to-port 80 转任意IP和port iptables -t nat -I PREROUTING -p tcp -i eth0 --dport 30000:40000 -j DNAT --to 10.186.35.216:80 iptables -t nat -I PREROUTING -p tcp -i eth0 --dport 30000:40000 -j DNAT --to-destination 10.186.35.216:80 查看和保存 iptables -t nat -n -L PREROUTING /etc/init.d/iptables save iptables -t nat -I PREROUTING -p tcp -d 10.186.35.216 --dport 30000:40000 -j REDIRECT --to-port 80-81 经检验,不会转发到81端口 -j DNAT --to-destination 192.168.1.1-192.168.1.10 未检验 iptables -t nat -I PREROUTING -p tcp -d 183.60.124.69 --dport 41000:42000 -j DNAT --to 183.60.124.69:8100 iptables -t nat -A PREROUTING -d 183.60.124.69 -p tcp -m tcp --dport 41000:42000 -j REDIRECT --to-port 8100 iptables -I INPUT -p tcp -m tcp --dport 10050:10051 -m comment --comment "zabbix_agentd communication" -j ACCEPT 删除文件里面空行####################################### echo "wq"|ex -c "g/^$/d" filename vim filename :g/^$/d 测试环境系统初始化####################################### 设置网卡启动 vim /etc/sysconfig/network-scripts/ifcfg-eth0 ONBOOT=yes NM_CONTROLLED=no 只修改以上两个选项,其余保持不变,最后重启网络连接 /etc/init.d/network restart rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux setenforce 0 echo "setenforce 0" >> /etc/rc.local /etc/init.d/iptables stop chkconfig iptables off echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config 重启系统,检查配置 /etc/init.d/iptables status chkconfig iptables --list getenforce yum repolist 创建系统快照 配置无密码ssh登录####################################### grep -q "StrictHostKeyChecking no" /etc/ssh/ssh_config || echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config rpm -q sshpass || yum -y install sshpass [ -f "$HOME/.ssh/id_rsa" ] || ssh-keygen -t rsa -P "" -f "$HOME/.ssh/id_rsa" hostip=( 172.16.1.187 172.16.1.188 172.16.1.189 172.16.1.190 172.16.1.232 172.16.1.233 ) hostpass="111111" # 所有host的密码都是111111.如果每个host用的密码不一样,可以使用字典来做 for h in ${hostip[@]};do sshpass -p $hostpass ssh-copy-id -i /root/.ssh/id_rsa.pub root@$h #ssh $h mkdir -pv /data001/data/kfklog/ #scp -rp /data001/app $h:/data001 done 测试: for h in ${hostip[@]};do ssh $h hostname;done hostip=( 172.16.1.187 172.16.1.188 172.16.1.189 ) for h in ${hostip[@]};do sshpass -p $hostpass ssh-copy-id -i /root/.ssh/id_rsa.pub root@$h #ssh $h mkdir -pv /data001/data/kfklog/ #scp -rp /data001/app $h:/data001 done 补充:SSHPASS环境变量和ssh指定端口 export SSHPASS='tLqR1MqtC4y8+aZxCGYLIA' sshpass -e ssh -p 54369 addansible@123.59.4.4 "sudo touch /etc/ansible/hosts.d/${PBL_IP}.tx" sshpass -e ssh -p 54369 addansible@123.59.4.4 "echo 11afds | sudo tee /tmp/a.txt" sshpass -e ssh -p 54369 addansible@123.59.4.4 'sudo sh -c "echo 111125 >> /etc/ansible/hosts.d/txall"' 腾讯云获取自己公网IP####################################### curl http://metadata.tencentyun.com/meta-data/public-ipv4 139.199.65.228 参考文档 https://www.qcloud.com/document/product/213/4934 tar####################################### 把若干文件打包并压缩成一个文件 tar --remove-files -zcvf aaa.log.2017-04.tar.gz aaa.log.2017-04* 不解压文件查看压缩包 tar [tf or tvf] aaa.log.2017-02.tar.gz 解压到指定目录 tar -xf aaa.log.2017-02.tar.gz -C /usr/local/ lftp####################################### lftp -u 'USERNAME,PASSWORD' IP_ADDRESS if####################################### 判断字符串为空 if [ -z $b ];then echo "b is null" fi if [ "$a"x == 'ok'x ];then echo "a is ok" fi 判断数字 if [ $a -eq 1 ];then echo "a is 1" fi if 命令/条件;then 命令 elif 命令/条件;then 命令 else 命令 fi while####################################### while [ $a -lt 3 ];do let a++ done for####################################### for i in aa bb cc;do echo $i done for i in `seq 1 3`;do echo $i done c=(`ls /`) for i in ${c[@]};do echo $i done 以下命令可以做成xshell按钮 随机字符####################################### openssl rand -base64 16 随机数字####################################### head -200 /dev/urandom | cksum | awk '{print $1}' 随机字母数字####################################### head -200 /dev/urandom | md5sum | awk '{print $1}' egrep过滤注释####################################### alias egrep='egrep -v --color=auto "^$|^\s*#"' CPU,MEM,DISK信息####################################### echo;echo "======= system info ======="; printf "cpu:\t`cat /proc/loadavg`;\n" ; free -m | awk 'NR==2 {print "mem:\tused," $3 "M;free," $4 "M;"}'; df -hP | grep -v sr0|sed 's/%//g' | awk 'NR>1 {if($5>=10) {print $6"," $5"%"}}' | tr '\n' ';' | awk '{print "disk:\t" $0}' ; echo "======= system info =======" du####################################### 查找./下>1G的目录 cd /;du -m --max-depth=1 --exclude="proc" ./ | sort -n | awk '{if($1>1024){printf "%.2fGB\t%s\n",$1/1024,$2}}' 1.67GB ./usr 3.25GB ./logs 54.07GB ./data001 60.34GB ./ 然后再进入某个大目录进行查看分析 cd /usr/ du -m --max-depth=1 --exclude="proc" ./ | sort -n | awk '{if($1>1024){printf "%.2fGB\t%s\n",$1/1024,$2}}' 查找大文件####################################### 查找/下大于100MB的文件(排除/proc目录)并进行从小到大进行排序 find / -path "/proc" -prune -o -type f -size +100000k -exec ls -l {} \; | awk '{printf "%.2fMB \t%s\n",$5/1024/1024,$9}' | sort -n 文件数量####################################### 计算当前目录及子目录下的文件数量 find ./ -path './proc' -prune -o -type f | wc -l 把若干文件打包并压缩成一个文件####################################### tar --remove-files -zcvf acpostdataadmin.log.2017-04.tar.gz acpostdataadmin.log.2017-04* 不解压文件查看压缩包 tar tf acadmin.log.2017-02.tar.gz tar tvf acadmin.log.2017-02.tar.gz 本服务器上某个监听端口的连接数####################################### netstat -np | awk '$4 ~ /:21$/{print $4,"<--",$5,$6,$7}' 本服务器上连接某个端口的连接数####################################### netstat -np | awk '$5 ~ /:21$/{print $4,"-->",$5,$6,$7}' #######################################
常用shell命令备忘
原创
©著作权归作者所有:来自51CTO博客作者zhuhc1988的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Docker 常用命令
docker常用命令;包含image、container、network、volume、dockerfile、compose file等常用操作
docker image container network -
shell 常用小命令备忘
本篇主要讲述命令如下,排序命令,搜索数据命令,压缩命令,解压缩命令
shell grep sort Java 搜索 压缩包 -
实用Shell命令备忘
开场白:这里简单记录一些常用的bash命令,一则备忘,二来希望可以帮助别人解决一些问题。1.检测文件是否存在if [ -f ./foo.txt ]then
shell Ubuntu bash Linux android -
常用 emacs 命令 备忘
C-x C-f 寻找文件。C-x C-s 保存文件。C-x C-b 列出缓冲区。C-x C-c
emacs 搜索 字符串 剪切板 -
Linux笔记:常用命令备忘
常用linux命令备忘
linux命令 mysql 搜索 常用命令