Chinaunix首页 | 论坛 | 博客
  • 博客访问: 70487
  • 博文数量: 22
  • 博客积分: 300
  • 博客等级: 二等列兵
  • 技术积分: 167
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-03 22:28
文章分类

全部博文(22)

文章存档

2011年(22)

我的朋友

分类:

2011-07-17 22:08:38

原文地址:Linux shell使用经验总结(1) 作者:劲松

--Shell操作Mysql的问题
方法一 mysql -e

方法二 命令行重定向mysql <  !反引号
#!/bin/bash
mysql -u root -p password use extmail;
show tables;
update alias set goto=REPLACE(goto,'$olname','$nwname$domain');
EOF
exit 0;

方法三 shell函数 也是重定向。!反引号
#!/bin/bash
sql_user=root
sql_pass=secret
sql_opt="-u$sql_user -p$sql_pass -s"
mysql_opt() {
  db_name=$1
  sql_lan=$2
  mysql $sql_opt << EOF
    USE $db_name;
    $sql_lan;
    QUIT
EOF
}
调用方法: mysql_opt $db_name "SQL语句"

--如何从SQL备份文件中提取出特定库
sed -n '/^-- Current Database: `test`/,/^-- Current Database: `/p' fulldump.sql > test.sql

--好用的lsof
    lsof abc.txt 显示开启文件abc.txt的进程
    lsof -i :22 知道22端口现在运行什么程序
    lsof -c abc 显示abc进程现在打开的文件
    lsof -g gid 显示归属gid的进程情况
    lsof +d /usr/local/ 显示目录下被进程开启的文件
    lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
    lsof -d 4  显示使用fd为4的进程
    lsof -i 用以显示符合条件的进程情况

--好用的pidof
       pidof -- find the process ID of a running program.
[root@mail]# pidof nginx
7535 7534 7533 7532 7531 7530 7529 7528 7527 7526

--如何加密shell脚本? csh工具-把脚本转化成相应的二进制执行文件
%BC%C5%C4%AF%C1%D2%BB%F0

--tcpdump使用指令
tcpdump host 210.27.48.1
tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
tcpdump tcp port 23 host 210.27.48.1
tcpdump udp port 123
tcpdump -i eth0 src host hostname
tcpdump -i eth0 dst host hostname
tcpdump -i eth0 gateway Gatewayname
tcpdump -i eth0 host hostname and port 80
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
tcpdump tcp port 23 host 210.27.48.1
tcpdump –i eth0 host hostname and dst port 80  目的端口是80
或者
tcpdump –i eth0 host hostname and src port 80  源端口是80  一般是提供http的服务的主机
如果条件很多的话  要在条件之前加and 或 or 或 not
tcpdump -i eth0 host ! 211.161.223.70 and ! 211.161.223.71 and dst port 80

--计算日期的小shell程序
date1=`date +%s -d "18:00:00 2005-08-01"`
date2=`date +%s -d "18:00:00 2005-07-31"`
date_diff=$((date1-date2))
echo $date_diff

--数字补全
seq -f %03g 5 5

--字符串补全
sed -e:a -e 's/^.\{1,2\}$/0&/;ta'

--格式化输出
awk 'BEGIN{printf "%-25s%-25s%-5s\n","20090410_19:11:18","linuxserver","00035"}'

--更新复制
cd /source; find . | cpio -pdmu /destination

--取最后一段
echo "/root/Mysql/My.swf"|awk -F/ '{print $NF}'

--字符串加颜色
echo -e "\033[0;33;1m字符串\033[0m"

--手动报警
#!/bin/sh
DISKSIZE=`df -h|grep '9[0-9]%'`
if [ ! -z "$DISKSIZE" ];then
    echo '$SERVER_ID DISK SPACE ALERT! ' "$DISKSIZE" | nc 1.2.3.4 -w 4 888
fi

--mysql快速转移用户的方法.
1)只限于数据库mysql.user表结构一致,版本相同
备份mysql库的user,db表  :
mysqldump -t mysql user -w "user !='root' and host not like 'localhost%';"
mysqldump -t mysql db -w "user !='root' and host not like 'localhost%';"
                         
2)脚本 版本不限
 见我博客另一篇文章。

阅读(659) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~