--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)脚本 版本不限
见我博客另一篇文章。
阅读(983) | 评论(0) | 转发(2) |