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<
testtest
test
x
chmod +x test.sh
php中使用heredoc
<?php
echo <<< 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 最近一次的操作记录
sudo !!
以 root 帐户执行上一条命令。
:w !sudo tee %
在 Vim 中无需权限保存编辑的文件。
cd -
更改到上一次访问的目录。
^foo^bar
将上一条命令中的 foo 替换为 bar,并执行。
cp filename{,.bak}
快速备份或复制文件。
mtr google.com
traceroute + ping。
!cmd:p
搜索命令历史,但不执行。
$ssh-copy-id user@host
将 ssh keys 复制到 user@host 以启用无密码 SSH 登录。
ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg
把 Linux 桌面录制为视频。
另外写一个小技巧:
shell 的通配符匹配非常强大,不过也非常危险,不少同学都碰到这样的问题,比如 rm a*,结果一个手抖,a 和星号之间多了个空格,结果目录下的文件都灰飞烟灭了……
bash 支持一个特殊的变量 !$,永远保存着前一条命令的最后一个参数,例如:
$ echo hello world
那么,这和防止误操作有什么关系呢?
比如你要删除以 a 打头的文件,可以先通过 ls 确定一下:
如果确认无误,之后只要:
!$ 自动替换为上个命令的 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 -r -I -l $'^\xEF\xBB\xBF' ./*.php | xargs sed -i '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加入群聊,欢迎一起研究技术
转载请注明:我的常用shell 出自老鄢博客 | 欢迎分享