我的常用shell

发布时间:2013-12-08 19:19:05 阅读:6064次

https://www.cnblogs.com/emanlee/p/3620785.html
双引号:
awk '{print "\""}'        #放大:awk '{print "  \"  "}'
使用“”双引号把一个双引号括起来,然后用转义字符\对双引号进行转义,输出双引号。
单引号:
awk '{print "'\''"}'       # 放大: awk '{print  "  '  \  '  '   " }'
使用一个双引号“”,然后在双引号里面加入两个单引号‘’,接着在两个单引号里面加入一个转义的单引号\',输出单引号。

https://stackoverflow.com/questions/25200246/search-for-a-specific-file-type-with-ack

ack

[root@web_test www.test.com]# ack --help=types

[root@web_test www.test.com]# ack --type=php '台管理权限尚未对你开放'

[root@web_test www.test.com]# ack '台管理权限尚未对你开放'

[root@web_test www.test.com]# find . -name '*.php' | ack -x '台管理权限尚未对你开放'

:'<,'>:s/,/;/

替换每行中第一个出现的逗号,

:s 当前行

:1,$s 所有行

:%s  所有行

:1,$s/old/new

:1,$s/old/new/g

[root@web_dev vhost]# find . -type f -name "*.conf" -exec ls  {} \; | xargs wc -l

find . -name "*.*" -exec ls  {} \; | xargs cat |wc -l

file_put_contents(file, data, mode, context) 

参数 描述 file 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。 

data 可选。规定要写入文件的数据。可以是字符串、数组或数据流。 

mode 可选。规定如何打开/写入文件。

可能的值: 

FILE_USE_INCLUDE_PATH 

FILE_APPEND 

LOCK_EX 

context 可选。规定文件句柄的环境。 context 是一套可以修改流的行为的选项。若使用 null,则忽略。

http://www.ithao123.cn/content-403397.html

<?php

error_log(print_r($array_data, 1),3,'/tmp/eoosou');

$array = array("username"=>"test");
error_log(var_export($array,1),3,'/tmp/log.txt');

?>

方法一:执行命令 file /sbin/init

1
2
[root@localhost jianbao]# file /sbin/init
/sbin/init: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

即是32位的 Linux, 若是64位的, 显示的是 64-bit 。

例如,在另一台 64 位机器运行的结果:

1
2
[root@edunosql ~]# file /sbin/init
/sbin/init: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

方法二uname -a

32位:Linux localhost.localdomain 2.6.32-431.17.1.el6.i686 #1 SMP Wed May 7 20:52:21 UTC 2014 i686 i686 i386 GNU/Linux

64位:Linux demolinux 2.6.32-431.11.2.el6.x86_64 #1 SMP Tue Mar 25 19:59:55 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

方法三:使用用“getconf WORD_BIT”和“getconf LONG_BIT”获得 word 和 long 的位数,64位系统中应该分别得到32和64。

在linux中,常常用到ctrl和其他按键组合,常用的有哪些及意义呢?

Ctrl+c 结束正在运行的程序

Ctrl+d 结束输入或退出shell

Ctrl+s 暂停屏幕输出【锁住终端】

Ctrl+q 恢复屏幕输出【解锁终端】

Ctrl+l 清屏,【是字母L的小写】等同于Clear

Ctrl+a 切换到命令行开始

Ctrl+e 切换到命令行末尾

Ctrl+u 清除剪切光标之前的内容

Ctrl+k 清除剪切光标及光标之后的内容
Ctrl+y 在光标处粘贴剪切的内容
Ctrl+r 查找历史命令【输入关键字,就能调出以前执行过的命令】

Ctrl+t 调换光标所在处与其之前字符位置,并把光标移到下个字符
Ctrl+x+u 撤销操作

Ctrl+z 转入后台运行【用户退出时,停止。请参阅曾写blog:linux ctrl+Z的作用  】

tee 过滤器有什么作用 ?
答: tee 过滤器用来向多个目标发送输出内容。如果用于管道的话,它可以将输出复制一份到一个文件,并复制另外一份到屏幕上(或一些其它程序)。
linuxtechi@localhost:~$ ll /etc | nl | tee /tmp/ll.out
在以上例子中,从ll输出可以捕获到 /tmp/ll.out 文件中,并且同样在屏幕上显示了出来。

root@OrangePI:/home/orangepi# sudo ps -ef | grep motion | awk '{print $2}'
1545
3045

find .  -name "*.mp4" -exec ls -rhlt {} >1.txt \; 

find . -type f  -name "*.mp4" -exec ls -rhlt {} >2.txt \;
find . -type f  -name "*.mp4" -size +100M  
find . -type f  -name "*.mp4" -size -1000M -exec ls -rlht {} \;

navicat 快捷键

1.ctrl+q           打开查询窗口
2.ctrl+/            注释sql语句
3.ctrl+shift +/  解除注释
4.ctrl+r           运行查询窗口的sql语句
5.ctrl+shift+r   只运行选中的sql语句
6.F6               打开一个mysql命令行窗口
7.ctrl+l            删除一行
8.ctrl+n           打开一个新的查询窗口
9.ctrl+w          关闭一个查询窗口

1 Where子句不用不等号(用了就无法使用索引了) 

2 Where子句不用函数(同上) 

3 Join子句中等号两边的数据类型要相同 

4 Like子句中用了前导%号,则无法使用索引 

5 尽量不用having子句,不利优化 

6 Order by 不要使用查询条件表达式

7 对重复值索引没用 

8 单表索引总数不要超过16个 

9 不要用空行 

10 WHERE子句中的所有未使用的索引部分,MySQL可以使用索引来解决ORDER BY的部分  如: SELECT * FROM test WHERE key1='1' ORDER BY key2;

mysql> explain select id,title from article force index(classid) where classid=1 limit 100;

主键是表行数据的唯一标识,具有唯一性和非空属性,索引主要作用是用于查询,提供查询速度的。主键会被自动建索引。

主键是表中的一个或多个字段,它的值用于惟一地标识表中的某一条记录.;使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构,只有当经常查询索引列中的数据时,才需要在表上创建索引。索引占用磁盘空间,并且降低添加、删除和更新行的速度。当然索引也有好处就是查询速度快,它利还是大于弊的所以请慎重使用索引。 

使用命令compgen ­-c,可以打印出所有支持的命令列表。

vpn的优先级高于代理,可以在squid代理服务器中设置dns服务器

在不可信环境下执行特权命令,通过在命令前加上 \ 来忽略可能存在的别名设置总是一个不错的安全实践。

测试工具选择sysbench,memtester

tee  将数据输出到标准输出设备(屏幕) 和文件

比如cat one.txt  | tee bbb.outfile  

basename file: 返回不包含路径的文件名比如: basename /bin/tux将返回 tux   

dirname file: 返回文件所在路径比如:dirname /bin/tux将返回 /bin 

ctrl+u 清除当前shell中输入的命令 

北京时间sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

利用php的sha1_file函数计算出每个上传的文件的SHA-1 散列值:

<?php

$filename = "test.txt";
$sha1file = sha1_file($filename);
echo $sha1file;
?>
把每个上传成功的文件的SHA-1散列值存到数据库里,当文件上传时首先通过sha1_file计算出文件的散列值,判断数据库里是否存在来决定你的文库的资料是否让上传成功。

文件内容编码转换

1.在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式

:set fileencoding=utf-8

2. enconv 转换文件编码,比如要将一个GBK编码的文件转换成UTF-8编码,操作如下

enconv -L zh_CN -x UTF-8 filename

3. iconv 转换,iconv的命令格式如下:

将一个GBK编码的文件转换成UTF-8编码

root@iZ23oylpvetZ:~# iconv -f GBK -t UTF-8 gbkfile.txt -o utf-8file.txt

将utf8编码的文件转换成gbk的文件,比如将centos文件转换为win的文件

iconv -f UTF-8 -t GBK report2.csv >new.csv

文件名编码修改

root@iZ23oylpvetZ:/home/yansiyu# ls -rlht
total 105M
-rw-r--r-- 1 root    root    100M Mar 26 17:58 data
-rw-rw-r-- 1 yansiyu yansiyu 3.7M Apr 15 17:43 shop.zip
-rw-rw-r-- 1 yansiyu yansiyu 1.2M Apr 16 15:11 kindeditor_a5.zip
drwxr-xr-x 2 yansiyu yansiyu 4.0K Apr 28 22:24 20150428
drwxr-xr-x 2 yansiyu yansiyu 4.0K May  1 18:00 20150501
-rw-r--r-- 1 root    root    1.2K May 10 10:11 vimtest.txt
-rw-rw-r-- 1 yansiyu yansiyu   13 May 10 10:17 ?й?.txt
root@iZ23oylpvetZ:/home/yansiyu# find . -inum 1050471 -exec convmv -f gbk -t utf-8 --notest {} \;

gbk转utf-8

设置ls显示颜色

alias ls = 'ls --color=auto'

录制桌面ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg

摄像头sudo ffmpeg -f video4linux2 -s 320*240 -r 10 -i /dev/video0 test.asf

边下载边播放wget   ftp://micorsops.com/something.avi   -O  -  | mplayer -

mplayer后台播放mplayer -playlist ./mp3/music.list < /dev/null > /dev/null 2>&1 &

linux中heredoc

#!/bin/bash
#test.sh
cat<  test
testtest
test
x
chmod +x test.sh

php中使用heredoc

<?php

echo <<< eod

1
2
3
4
5
6
eod;

?>

cat /etc/shadow 所有的用户

cat /etc/group 所有的组

usermod -a -G groupname username 保留之前用户的组,新增groupname

gpasswd -a yansiyu root 将yansiyu加入root组

gpasswd -d yansiyu root  将yansiyu移去root组

usermod -L yansiyu   锁定账号

usermod -U yansiyu   解锁账号

!vim !cat !cd   最近一次的操作记录

  1. sudo !!

    以 root 帐户执行上一条命令。

  2. :w !sudo tee %

    在 Vim 中无需权限保存编辑的文件。

  3. cd -

    更改到上一次访问的目录。

  4. ^foo^bar

    将上一条命令中的 foo 替换为 bar,并执行。

  5. cp filename{,.bak}

    快速备份或复制文件。

  6. mtr google.com

    traceroute + ping。

  7. !cmd:p

    搜索命令历史,但不执行。

  8. $ssh-copy-id user@host

    将 ssh keys 复制到 user@host 以启用无密码 SSH 登录。

  9. ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg

    把 Linux 桌面录制为视频。

    另外写一个小技巧:

    shell 的通配符匹配非常强大,不过也非常危险,不少同学都碰到这样的问题,比如 rm a*,结果一个手抖,a 和星号之间多了个空格,结果目录下的文件都灰飞烟灭了……

    bash 支持一个特殊的变量 !$,永远保存着前一条命令的最后一个参数,例如:

    echo hello world

    hello world
    echo !$
    world

    那么,这和防止误操作有什么关系呢?

    比如你要删除以 a 打头的文件,可以先通过 ls 确定一下:

    $ ls a*
    a1.txt  a2.txt  a3.txt  a4.txt

    如果确认无误,之后只要:

    rm  !$

    !$ 自动替换为上个命令的 a*,就可以把这些文件干掉了~  不会再出现手抖打错的情况了,如果通配符确实出了问题,第一步 ls 就可以发现。

svn add index.php

svn revert index.php

Use the svn revert command:

svn revert --recursive example_folder

iptables -F  清空iptables

iptables -F -t nat 清空iptables包含nat

svn log -r {2014-11-18}:{2014-11-20} -v 
查的是18,19两天的svn日志

比对两个文件夹中不同的文件

1 #!/bin/bash
2 #filedate=`date "+%Y%m%d%H%M%S"`
3 list=`find /var/www/www1/`
4 for i in $list
5 do
6     let j=j+1
7     echo $j
8     filename=${i##*/}
9     path=${i%/*}
10     checkfile=${path/www1/www2}/$filename
11     echo $checkfile
12     diff $i $checkfile
13     if [ $? -gt 0 ]
14     then
15         echo $i>>/home/yansiyu/log.txt
16         echo $result>>/home/yansiyu/log.txt
17         echo "----">>/home/yansiyu/log.txt
18     else
19         echo ""
20     fi
21 done;

1 #!/bin/sh
2 vers=`/usr/bin/svn log /var/www/html|grep '2014-11-18' |grep ^r |awk '{print $1}'|tr -d 'r'`
3 for v in $vers
4 do
5     #echo $v
6     /usr/bin/svn log /var/www/html -r $v
7 done

vim中删除空行包括空白字符tab

:g/^\s*$/d

删除空行,不包括空白字符与tab

:g/^$/d

:g!/./d

php中使用error_log

<?php

$array=array("title"=>"phpjx");
$str=var_export($array,TRUE);
echo $str;
error_log($str,3,"E:\error_log.txt");
?>

:map a i file_put_contents("/var/www/html/test.txt","",FILE_APPEND);
:map b i error_log(var_export($array,1),3,'/var/www/html/log.txt');

vim中f1,f2,f4映射

:map <f1> i file_put_contents("/var/www/html/test.txt","",FILE_APPEND);
:map <f2> i error_log(var_export($array,1),3,'/var/www/html/log.txt');
vim中使用别名:

newcp(){ cp "$@" "$@".$(date +%Y%m%d%H%M%S) && echo "bak file ok"; }
alias ncp='newcp'
ftime(){
find . -name "*.php" -mtime "$@" -exec ls -lrht {} \;
}
alias ftime='ftime'
fmin(){
find . -name "*.php" -mmin "$@" -exec ls -rlht {} \;
}
alias fmin='fmin'
fx(){
find . -name "*.php" -exec grep -inH --color "$@" {} \;
}
alias fx='fx'

gbk2utf8(){

iconv -f GBK -t UTF-8 $@ -o $@.utf-8file.txt && echo "convert success";

}

alias gbk2utf8='gbk2utf8'

find . -regex '.*\.\(la\|so\)

磁盘空间检查

df -h | awk '{print $5}'

df -h | awk '{print $5}' | awk -F '%' '{print $1}'

内存检查

mem_free=`free -m | grep Mem | awk '{print $4}'`

echo $mem_free

软链接

ln -sv 前面路径为已经存在的路径,后面为一个名称

import截图

import  -window root screenshot.png

import screenshot.png

import -window window_id screenshot.png

phpdocument使用

test@test:/var/www/html$ sudo pear install phpDocumentor

test@test:/sudo pear uninstall phpDocumentor

抓ftp数据包 root@test:/var/log/samba# sudo tcpdump -i eth0 -nn -X 'port 21'

查看端口号

ps aux|grep httpd

netstat -ntlp|grep pid

http://www.it165.net/os/html/201212/4260.html

centos rename改名

将jpeg改为jpg 

root@/root# rename .jpeg .jpg *.jpeg

ubuntu rename改名

root@test-Aspire-E1-571G:/home/test# rename -f 's/.html/.htm/' 2.html//改扩展名

root@test-Aspire-E1-571G:/home/test# rename -f 's/.htm//' 1.htm//去掉扩展名

root@test-Aspire-E1-571G:/home/test# rename 'y/A-z/a-z/' ASDF.HTML//文件名大写改小写

root@test-Aspire-E1-571G:/var/www/html/pro_1/test/a#

find . -name "*.html" -exec rename 's/html/txt/' {} \;//批量改名

root@test-Aspire-E1-571G:/var/www/html/pro_1/test#

find . -name "*.txt" -ok rename 's/txt/text/' {} \;//批量改名加确认

find批量替换文件内容

root@yansiyu-Aspire-E1-571G:/home/yansiyu/桌面#

find . -name "*.txt" -exec sed -i 's/txt/html/' {} \;

find多重条件

https://blog.csdn.net/yangzhongxuan/article/details/7519899

1. sed 
命令格式:
sed -i "s/old/new/g" `grep old -rl path`
例如:
    把文件中stv替换为hello
    sed -i "s/stv/hello/g" `grep stv -rl ./test/` 
    只把文件中“stv” 字符串替换为hello
    用\b 来限定字符界限
    sed -i "s/\bstv\b/hello/g" `grep stv -rl ./test/`
    2.perl
    只把本地目录下所有的.c 和 .h 文件中的 system 字符串替换为 system_fun
    find -name "*.[hc]" | xargs perl -pi -e 's|\bsystem\b|system_fun|g'

bash-3.2# find . ! -name "water_*" -name "*.jpg" -o ! -name "water_*" -name "*.png"

./1.jpg

./2.png

bash-3.2#

查看BOM

root@/root# grep -r -I -l $'^\xEF\xBB\xBF' ./

root@/root# find . -name "*.*" -exec grep -nH -I -l --color $'^\xEF\xBB\xBF' {} \;

批量替换BOM

root@/root#grep ---l $'^\xEF\xBB\xBF' ./*.php | xargs sed -'s/^\xEF\xBB\xBF//g'

grep查找

cat *.txt| grep -nH --color 'txt'

ps aux|grep svnserve

svn info

查看最近3个版本日志

svn log 1.php -v -l3

svn恢复

1、查看日志svn log 1.php

2、比对日志svn diff -r 1:2 1.php   #老版本与新版本的比较

3、回滚svn merge -r 2:1 1.php     #将老版本的内容覆盖到新版本

4、提交生效 svn commit -m '' 1.php

svn服务器查看某个版本号修改了哪些文件

svnlook changed -r1 版本控制文件夹

root@0403:/root# svnlook changed -r1 /var/www/svndata/ci_phpjx/

取得文件夹中所有非空行的的文件

find |awk -F '/' '{print $2}' | grep ^[^$]

[root@localhost test]# cp `find  |awk -F '/' '{print $2}' | grep ^[^$]` ../test2

1、命令前面忘了加sudo,

ctrl+a前面输入sudo

2、vim另存为文件

!w otherfile'sname

3、普通用户保存root用户文件

:w !sudo tee %

4、切换回上一个目录

cd -

5、备份一个文件

cp filename{,.bak}

6、创建一个内存目录

mount -t tmpfs -o size=1024m tmpfs /mnt/ram

7、用diff对比远程服务器文件跟本地文件

ssh -p2013 test@localhost "cat ~/1.sh"|diff -  /home/test/pre.sh

8、du -s * | sort -n | tail

列出当前目录里最大的10个文件

9、sudo !!

执行上一条命令,如果忘记输入sudo,那么输入ctrl+p,ctrl+a

10、netstat –tlnp

列出本机进程监听的端口号

11、ssh -p2013 test@localhost bash < /home/test/pre.sh

在远程机器上运行一段脚本。这条命令最大的好处就是不用把脚本拷到远程机器上。

12、vim scp://username@host//path/to/somefile

vim一个远程文件

root@iZ23oylpvetZ:/home/yansiyu# vim scp://yansiyu@120.26.44.201:11516//home/yansiyu/1.txt

13、!!:gs/ls/ll

将上次执行的命令ls改为ll来执行

14、watch -d -n 1 'df; ls -FlAt /home/test'

实时监控/home/test这个文件夹中文件的变动(包括数量与大小)

15、wget --random-wait -r -p -e robots=off -U Mozilla www.example.com

用 Wget 的递归方式下载整个网站

16、net rpc shutdown -I IP_ADDRESS -U username%password

远程关掉一台WINDOWS机器

17、(cd /tmp && ls)

在一个子SHELL中运行一个命令

18、history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

列出你最常用的10条命令

19、[test@06_09 test1]$ username='test is 29 years old'

[test@06_09 test1]$ echo ${username/test/yansiyu}

yansiyu is 29 years old

shell中替换,将test替换为yansiyu

1.修改主机名 #hostname Slyar

2.修改IP地址(eth0为网卡名称)#ifconfig eth0 192.168.1.5 netmask 255.255.255.0

3.修改默认网关(eth0为网卡名称) #route add default gw 192.168.1.1 dev eth0

4.修改DNS#vim /etc/resolv.conf

转:http://www.netingcn.com/aliyun-iptables.html

第一步:清空所有规则 当Chain INPUT (policy DROP)时执行/sbin/iptables -F后,你将和服务器断开连接 所有在清空所有规则前把policy DROP该为INPUT,防止悲剧发生,小心小心再小心 /sbin/iptables -P INPUT ACCEPT 清空所有规则 /sbin/iptables -F /sbin/iptables -X 计数器置0 /sbin/iptables -Z 第二步:设置规则 允许来自于lo接口的数据包,如果没有此规则,你将不能通过127.0.0.1访问本地服务,例如ping 127.0.0.1 /sbin/iptables -A INPUT -i lo -j ACCEPT 开放TCP协议22端口,以便能ssh,如果你是在有固定ip的场所,可以使用 -s 来限定客户端的ip /sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT 开放TCP协议80端口供web服务 /sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT 10.241.121.15是另外一台服务器的内网ip,由于之间有通信,接受所有来自10.241.121.15的TCP请求 /sbin/iptables -A INPUT -p tcp -s 10.241.121.15 -j ACCEPT 接受ping /sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT 这条规则参看:http://www.netingcn.com/iptables-localhost-not-access-internet.html /sbin/iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT 屏蔽上述规则以为的所有请求,不可缺少,否则防火墙没有任何过滤的功能 /sbin/iptables -P INPUT DROP 可以使用 iptables -L -n 查看规则是否生效

至此防火墙就算配置好,但是这是临时的,当重启iptables或重启机器,上述配置就会被清空,要想永久生效,还需要如下操作

/etc/init.d/iptables save 或 service iptables save 执行上述命令可以在文件 /etc/sysconfig/iptables 中看到配置

1 禁止192.168.99.182访问本机的8088端口

2 iptables -I INPUT -s 192.168.99.182 -p TCP --dport 8088 -j DROP

3

4 禁止192.168.99.238访问本机的所有端口

5 iptables -I INPUT -s 192.168.99.238 -j DROP

6

7 清除规则

8 iptables -F

9

10 禁止本机的8088端口

11 sudo iptables -A INPUT -p tcp --dport 8088 -j DROP

12

13 #允许所有IP对本机80端口的访问

14 iptables -I INPUT -p tcp --dport 80 -j ACCEPT

15 iptables -I INPUT -p udp --dport 80 -j ACCEPT

16

17 iptables -F

18 iptables -F -t nat

19 iptables -X

20 iptables -P FORWARD ACCEPT

21 iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.1.45

22

23 vim /etc/sysctl.conf:

24 修改:

25 net.ipv4.ip_forward = 0

26 为:

27 net.ipv4.ip_forward = 1

28

29 端口转发

30 root@test:/var/www/html#iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

root@test:/var/www/html# iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j DNAT --to 127.0.0.1:8088


31 清除nat规则


32 iptables -F -t nat

sudo apt-get install mailutils

ctrl+g显示当前文件名

J合并行

d0删除至行首

d$删除到行尾=D

cc删除一行,并进入插入模式

dd删除当前行

查看最近3个版本日志

svn log 1.php -v -l3

svn恢复

1、查看日志svn log 1.php

2、比对日志svn diff -r 1:2 1.php   #老版本与新版本的比较

3、回滚svn merge -r 2:1 1.php     #将老版本的内容覆盖到新版本

4、提交生效 svn commit -m '' 1.php

svn另存版本

svn log 1.php

svn up -r3 1.php

cp 1.php{,.bak}

rm -rf 1.php

svn up 1.php

vimdiff 1.php 1.php.bak

svn备份

1、完全备份和增量备份svn。

svnadmin   dump  /svn/project/www     > full.svn.bak        #完全备份/svn/project/www这个版本库,并另存为full.svn.bak

svnadmin   dump  /svn/project/www  -r 8 --incremental    >  svn.bak.1       #以增量把版本库8转存到svn.bak.1

2、dump备份还原。

svnadmin   create  /svn/project/test   #创建一个新的版本库

svnadmin   load    /svn/project/test     < full.svn.bak #现还原完全备份

svnadmin   load    /svn/project/test     < svn.bak.1 #再还原增量备份的内容

使用svnadmin hotcopy

备份 svnadmin hotcopy /var/www/html/svndata/pro_1  /var/www/html/svndata/pro_1_bak --clean-logs

恢复 svnadmin hotcopy /var/www/html/svndata/pro_1_bak  /var/www/html/svndata/pro_1 --clean-logs

显示mysql

test@test:~$  mysql -uroot -p123456 -N -e 'select * from db.favorite limit 10'

test@test:~$  mysql -uroot -p123456 -N -e 'select * from db.favorite limit 10\G'

导出mysql

[root@test ~]# mysql -uroot -p123456 -e "select * from db.favorite into outfile '/tmp/mysql.txt' fields terminated by ',' enclosed by '\"' lines terminated by '\r\n'";

导入mysql,打开update.sql,必须加上use 数据库的名称,方法(创建一个new.sql,输入use dbname,然后cat download.sql >> new.sql);

mysql -uroot -ppassword < update.sql

1、将当前行的第一个mysql替换成我的mysql

:s/mysql/我的mysql

2、将当前行的mysql全部替换成我的mysql

:s/mysql/我的mysql/g

3、将当前行的mysql全部替换成我的mysql,并确认

:s/mysql/我的mysql/gc

4、将第1,6行的mysql全部替换成我的mysql并确认

:1,6s/mysql/我的mysql/gc

5、将第1,6行注释

:1,6s/^/#/gc

6、将文件全部注释

:1,$s/^/#/g

:g/^/s//#/g  //注意两个//

vim中使用正则表达式

:1,$s/127\.0\.0\.\(\d*\)/192.168.6.102/gc

将所有行的127.0.0打头的ip地址替换为192.168.6.102,并确认

find . -name 'user_*.dwt' -exec cp {} {}.bak \;

清除nat规则

iptables -F -t nat

透明代理

root@test:/var/log/squid3# iptables -t nat -A PREROUTING -i wlan0 -s 192.168.6.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128

ini_set('memory_limit',"1000M");

http://linuxconfig.org/bash-scripting-tutorial

http://www.gnu.org/software/gawk/manual/gawk.html

http://www.freeos.com/guides/lsst/

#关闭mysql

/usr/local/mysql/bin/mysqladmin -uroot -p -S  /tmp/mysql.sock shutdown

#启动mysql

./scripts/mysql_install_db --defaults-file=/etc/myslave.cnf --user=mysql

#./bin/mysqld_safe --user=mysql &

/usr/local/mysqlslave/bin/mysqld_safe --defaults-file=/etc/myslave.cnf --user=mysql &

/usr/local/mysqlserver/bin/mysql -h127.0.0.1 -uroot -P3306 -p -S /tmp/mysql.sock

#创建虚拟硬盘

dd if=/dev/zero of=fat32 bs=1G count=4

mkfs.vfat /mnt/e/fat32

mount -o loop --o umask=000  /mnt/e/fat32 /mnt/fat32/

umount -l /mnt/fat32

mount //192.168.2.112/virtual_xp /mnt/virtual_xp/

umount -l /mnt/virtual_xp

squid服务器

root@test:/var/log/squid3# pwd

/var/log/squid3

启动service squid start 或 /etc/init.d/squid start

或者/usr/sbin/squid -sD /usr/sbin/squid -zX

停止squid -k shutdown

重配置squid -k reconfigure

清除缓存

root@test2007:/var/www/html/phpjx/css# squidclient -p 80 -h localhost -m PURGE http://www.phpjx.com/css/style.css

1 #!/bin/sh

2 squidcache_path="/usr/local/squid3/cache/"

3 squidclient_path="/usr/bin/squidclient"

4 grep -a -r $1 $squidcache_path/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}' > cache_list.txt

5 for url in `cat cache_list.txt`; do

6 $squidclient_path -m PURGE -p  80 $url

7 done

coreseek、sphinx安装及使用

root@test2007:/home/phpjx/coreseek-3.2.14# pwd

/home/phpjx/coreseek-3.2.14

root@test2007:/home/phpjx/coreseek-3.2.14# ls

README.txt  csft-3.2.14  mmseg-3.2.14  testpack

root@test2007:/home/phpjx/coreseek-3.2.14# cd mmseg-3.2.14

root@test2007:/home/phpjx/coreseek-3.2.14/mmseg-3.2.14#

./configure --prefix=/usr/local/mmseg

apt-get install autoconf

apt-get install automake

aclocal

apt-get install libtool

aclocal

libtoolize --force

automake --add-missing

autoconf

autoheader

make clean

./configure --prefix=/usr/local/mmseg3

make

make install

root@test2007:/home/phpjx/coreseek-3.2.14# cd csft-3.2.14

root@test2007:/home/phpjx/coreseek-3.2.14/csft-3.2.14# pwd

/home/phpjx/coreseek-3.2.14/csft-3.2.14

sh build*.sh

./configure --prefix=/usr/local/coreseek --without-python --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql

make && make install

/usr/local/sphinx/bin/indexer: error while loading shared libraries: libmysqlclient.so.15: cannot open shared object file: No such file or directory
/usr/local/sphinx/bin/indexer: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory
这主要是因为你安装了一些库后,没有能够配置相应的环境变量。你可以通过建立连接的方式修正这个问题,运行如下命令:
ln -s /usr/local/mysql/lib/libmysqlclient.so.15 /usr/lib/libmysqlclient.so.15
ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2

./indexer -c ../etc/csft.conf --all //生成索引

./search -c ../etc/csft.conf one //查询

启动服务 /usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/sphinx.conf

生成索引 /usr/local/coreseek/bin/indexer --rotate -c /usr/local/coreseek/etc/sphinx.conf test1

搜索 /usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/sphinx.conf 兄弟连

apache服务器

完美重启

/usr/local/httpd/bin/apachectl graceful

nginx服务器

killall nginx

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

测试配置文件

/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

平滑重启

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -s reload

varnish服务器

vim /etc/varnish/default.vcl

killall varnishd

/usr/sbin/varnishd -P /var/run/varnishd.pid -a 127.0.0.1:6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,56M

清除缓存

root@iZ23oylpvetZ:/var/www/html/weixin# /usr/bin/varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret
200
-----------------------------
Varnish Cache CLI 1.0
-----------------------------
Linux,3.2.0-67-generic,x86_64,-smalloc,-smalloc,-hcritbit
Type 'help' for command list.
Type 'quit' to close CLI session.
varnish> ban.url http://120.26.44.201:88/1.txt
200

root@test:/home/test# lsof -i :8088|grep localhost |wc -l

#启动memecache服务器

/usr/local/bin/memcached -d -m 10 -u root -l 127.0.0.1 -p 12000 -c 256 -P /tmp/memcached.pid

mysql主从复制

#主服务器执行

GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO backupuser@'127.0.0.1' IDENTIFIED BY '123456';

#从服务器执行

reset slave;

slave stop;

change master to master_host='127.0.0.1',master_user='backupuser',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=107,master_port=3306;

slave start;

#更改svn服务器ip地址

svn switch --relocate svn://192.168.2.108/pro1 svn://127.0.0.1/pro1

#修改svn之前的日志记录

cd hooks

ls

cp pre-revprop-change.tmpl pre-revprop-change

ll

chmod +x pre-revprop-change

svn propset svn:log "新日志" -r5 --revprop

lynx取得纯文本的链接

lynx --dump url

1、#将行前的数字符号去掉

:1,$s/\(\d*\)\.//c

2、#将域名去掉

:1,$s/http:\/\/test.phpjx.com\/zixun\/2012//c

3、#将第一个出现的/改为test.phpjx.com

:1,$s/\//http:\/\/test.phpjx.com\//c

4、#将gaoqing后面的数字去掉

:1,$s/gaoqing_\(\d*\)/gaoqing/c

http://quanapi.sinaapp.com/fetion.php?u=13812345678&p=123456&to=13812345678&m=飞信的内容呀

http://www.mysqltutorial.org/mysql-export-table-to-csv/

mysql导出csv(注意权限),导出的文件在mysql所在的服务器上

mysql> GRANT select,file ON *.* TO 'filecsv'@'%' IDENTIFIED BY 'filecsv' WITH GRANT OPTION;

select *from gc where 1 into outfile '/var/www/html/test/report2.csv' fields terminated by ',' optionally enclosed by '"' lines terminated by '\n';

select *from gc where 1 into outfile 'd:/report3.csv' fields terminated by ',' optionally enclosed by '"' lines terminated by '\n';

mysql导入csv

当前mysql服务器端

load data infile '/var/www/html/test/report2.csv' into table test fields terminated by ',' optionally enclosed by '"' lines terminated by '\n';

mysql客户端

load data local infile 'D:/1.csv' into table userinfo fields terminated by ',' optionally enclosed by '"' lines terminated by '\n';

启动mongodb

/home/test/mongodb/bin/mongod --dbpath=/usr/local/mongodb/mongodb_data/ --logpath=/usr/local/mongodb/mongodb_log/mongodb.log --logappend &

mongo导入csv

root@test:/var/www/html# /home/test/mongodb/bin/mongoimport -d aabb -c gc --type csv -f id,classid,source_from,userid,username,real_name,mobile,areaname,ip_area,email,regdate,test_url,title,keyword,pic_url,pic_url_nowater,add_memo,add_num,ip,disabled,addtime,flag,water_flag   --file /var/www/html/fav.csv

加上编码CHARSET UTF-8 fileds

查看访问次数最多的ip

cat access_log |awk '{print $1}'|sort -n|uniq -c|sort -nr

如有问题,可以QQ搜索群1028468525加入群聊,欢迎一起研究技术

支付宝 微信

有疑问联系站长,请联系QQ:QQ咨询
下一篇:ls.sh

转载请注明:我的常用shell 出自老鄢博客 | 欢迎分享