双网卡默认网关问题:

假设有线连内网, 无线连外网, 无线网关ip:192.168.1.1 , 有线网关ip: 192.168.6.1
+method 1:

1
2
3
4
5
6
7
route print -4 
route delete 0.0.0.0
'''添加无线路由: 目标,子网掩码,网关, 可以加metric跃点'''
route add 0.0.0.0 mask 0.0.0.0 [无线网关ip] -p metric 1
'''添加有线路由: 目标,子网掩码,网关, 可以加metric跃点'''
route add 192.168.6.0 mask 0.0.0.0 [有线网关ip] -p
route print -4

+method 2: (未验证)
 windows下, 外网(无线)网卡 => 属性 => 高级 => 手工跃点数为1
 然后配置有线路由, 同上

nat设置

1
#添加默认路由

virtualbox有四种模式 NAT, Bridge, Host Only, Internal, 可以认为Host Only就是vm和外部主机通讯

##svn服务的搭建,迁移
搭建:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    svnadmin create --fs-type fsfs /www/svn/repository/
#修改
svn import /www/svn/tmp/ file:///www/svn/repository/ -m "first import"
#修改版本库文件的权限
# chmod 770 repository
# 修改允许访问版本库的用户文件
# vim /www/svn/repository/conf/passwd
# chmod -R g+w repository
# 修改用户访问版本库的权限
# vim /www/svn/repository/conf/authz 权限配置文件中出现的用户名必须在passwd文件中有定义过,对权限配置文件aauthz的修改会立即生效。
[groups]
user_group_name=username1,username2 //用户间以逗号分割
版本库目录格式:
[repository:/project/directory] //版本库:/项目/目录
@user_group_name=permissions //用户组名=权限
username=permissions //用户名=权限
[]可以有多种定义 /表示对全部的版本库设置权限,repos1:/表示对repos1设置权限,repos2:/www表示对repos2中的www项目设置权限,repos2:/www/example.com表示对repos2中的www项目的example.com目录设置权限。
可以用*来表示所有用户。
权限可以设置为w,r,wr和空,空表示没有任何权限。
新建用户访问版本库权限
[aliases]
[groups]
developer = xuhh
[/]
@developer = rw
#启动svn
./svnserve -d --listen-port 9999 -r /www/svn/repository --log-file /usr/local/subversion-1.6.13/logs/svn.log --pid-file /usr/local/subversion-1.6.13/logs/svn.pid

-d 以daemon方式运行
–listen-port 监听端口号

###svn服务器的完美迁移

####方法1:

1
2
3
4
svnadmin dump /opt/svn/svntest/ > /var/tmp/svntest_20120604 
###3. 将dumpfile导入到新的repository 目录中。
svnadmin load 新建的repos的目录路径(/repository/directory) < dumpfile
svnadmin load /opt/svn/svntest/ < /var/tmp/svntest_20120604

####方法2 来源,未验证
原有服务器上查看了一下,svnserver的运行状态如下
svnserve -d –listen-port 9999 -r /opt/svn/repos直接用svn的认证方式,更加简单

在/etc/hosts中添加新服务器的别名为sara,并打穿ssh等待,同步数据rsync -avuzb /opt/svn/repos/ root@sara:/opt/svn_repos

登录sara服务器,在/etc/rc.local中添加svn启动命令
svnserve -d --listen-port 9999 -r /opt/svn_repos
然后再手工执行一次10分钟不到,大功告成,开发机要继续用这个svn,只需要修改本机的host,把域名指向新的ip即可

###方法3:hotcopy

1
2
3
4
5
#1.备份
svnadmin hotcopy /opt/svn/svntest/ /var/tmp/svntest_20120604 –clean-logs
#如果你传递–clean-logs选项,svnadmin会执行热拷贝操作,然后删除不用的Berkeley DB日志文件。你可以在任何时候运行这个命令得到一个版本库的安全拷贝,不管其它进程是否使用这个版本库。
#还原
#svnadmin hotcopy /var/tmp/svntest_20120604 /opt/svn/svntest/

find

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
find . -name "*.[h|c|sh]"    #[sh]只能是s,或者是h, 不会去找sh
find 。 -name "*.[h|c]" -o -name "*.sh" 应该用这个
查找/etc/rc.d目录下面所有以crond结束的文件,并使用file指令查看其属性
查找删除
find . -name filename -exec rm -rf {} \;
find . -name filename |xargs rm -rf
磁盘中大于3M的文件
find . -size +3000k -exec ls -ld {} \;
find . -type f -exec grep “the string you want find...” {} ; -print #含特定字符串的文件
find -name ".*" -perm -007 -007是指查找所有用户都可读、写、执行的文件
find . -perm -100 -100是指权限至少是属主可运行. 在unix系统下,你可以拥有对目录文件的执行权你才可以进入一个目录.这便是目录文件被列出的原因.
find *.c -exec cp '{}' /tmp ';'
如果有特殊文件,可以用cpio,也可以用这样的语法:
find dir -name filename -print | cpio -pdv newdir
A=`find ~ -print` | ls -l --full-time $A 2>/dev/null | grep "Jun 27" | grep 1998 查找某一天更改的文件
使用find 命令查找某个时间段的shell怎么写。比如11点到12点的。thanks
创建一个脚本judgetime,内容如下:
ls -l $*|awk '{split($8,hour,":");if((hour[1]>23 || hour[1] < 1)&&hour[1]<24)print}'
到要查找的目录下,运行
find ./ -name "*" -exec judgetime {} /;

删除指定日期的文件
find ./ -name 文件名 -exec rm -f {} /;
例:删除当前30天内没用过的文件,用如下命令:
find / -atime +30 -exec rm -f {} /;

使用chown, chgrp, chmod命令可以很好的比较mtime和ctime
chown改变一个文件的属主,用ctime可以找到,用mtime便找不到.
访问一个文件不能改变inode信息.

find / -size 1500c 字符 c 表明这个要查找的文件的大小是以bytes为单位
find/ -size +10000000c 这个命令, 则标明我们指定系统在根目录中查找出大于10000000字节的文件
find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件
find / -empty # 查找在系统中为空的文件或者文件夹
find / -group cat # 查找在系统中属于 groupcat的文件
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 #查找在系统中最后24小时里修改过的文件
find / -nouser #查找在系统中属于作废用户的文件
find / -user fred #查找在系统中属于FRED这个用户的文件

find . -maxdepth 2 -name fred

find / -user fred -or -user george 查找属于fred或者george这两个用户的文件。
find /tmp ! -user panda
find /tmp -size +10000000c -and -mtime +2

我是在 Solaris 上面试的.我是对 -ctime 不明白.
试的结果如下:
修改文件,-mtime 改了, -ctime 也会改.
访问文件,-atime 改了, -ctime 没变.
chown, chgrp, chmod,mv, 都会使 -ctime 改变,但不影响 -atime 和 -mtime.
touch 可以改 -mtime and/or -atime,但 touch -a 只改访问时间时,-ctime也改了.
touch -m 改修改时间时,-ctime当然也改了.
好象还有别的很多东西可以令 -ctime 改变, 搞不清楚.
有什么方法可以显示 -mtime,atime,ctime 吗?
可以用 -ctime 来实现对目录的增量文件进行备份或 transfer 吗 ?
多谢!

没有什么工具显示,(可能是俺不知道)
把下面程序里的st_mtime换成st_ctime,或st_atime便可以得到你要的了.
#i nclude
int
main (int argc, char **argv)
{
struct stat buf;
char date[80];
char fname[80];
printf("Enter filename (with full path) to check mtime : ");
scanf("%s",fname);
stat(fname, &buf);
printf ("mtime (in sec) of %s = %ld/n", fname, buf.st_mtime);
strcpy(date, ctime((time_t *)&(buf.st_mtime)));
printf ("mtime (in date) of %s = %s/n", fname, date);
}

#压缩文件的问题
find . -name “.jpg” -exec tar -czf picture.tgz {} \; 命令执行完毕后,picture.tgz中只有一个文件
find . -name “
.jpg” | xargs tar -czf picture.tgz

ed

awk

zip

zip -rP a123 text.zip test.txt

grep

-P 有的linux下没有
grep -Pnr “\d{3}” find -name "*.txt" # 只搜索某一类文件
grep -Pnr “\d{3}” find |grep -P ".(txt|php)$" #只搜索某几类文件,如下,只搜索txt和php文件
grep -Pnr “\d{3}” ls |grep -Fv weiba #排除含某关键词的子目录不搜索。如下,含“weiba”关键词的子目录不搜索
grep -Pnr “\d{3}” ls |grep -Pv '^(weiba|huati)$'
grep -Pnr “\d{3}” ls |grep -P '^(weiba|huati)$'
正则表达式选择与解释:
-E, –extended-regexp PATTERN 是一个可扩展的正则表达式(缩写为 ERE)
-F, –fixed-strings PATTERN 是一组由断行符分隔的定长字符串。
-G, –basic-regexp PATTERN 是一个基本正则表达式(缩写为 BRE)
-P, –perl-regexp PATTERN 是一个 Perl 正则表达式
-e, –regexp=PATTERN 用 PATTERN 来进行匹配操作
-f, –file=FILE 从 FILE 中取得 PATTERN
-i, –ignore-case 忽略大小写
-w, –word-regexp 强制 PATTERN 仅完全匹配字词
-x, –line-regexp 强制 PATTERN 仅完全匹配一行
-z, –null-data 一个 0 字节的数据行,但不是空行
杂项:
-s, –no-messages 不显示错误信息
-v, –invert-match 选中不匹配的行
-V, –version 显示版本信息并退出
–help 显示此帮助并退出
–mmap 忽略向后兼容性
输出控制:
-m, –max-count=NUM NUM 次匹配后停止
-b, –byte-offset 输出行的同时打印字节偏移
-n, –line-number 输出行的同时打印行号
–line-buffered 每行输出清空
-H, –with-filename 为每一匹配项打印文件名
-h, –no-filename 输出时不显示文件名前缀
–label=LABEL 标准输入将LABEL 打印为文件名
-o, –only-matching 只显示一行中匹配PATTERN 的部分
-q, –quiet, –silent 不显示所有输出
–binary-files=TYPE 假定二进制文件的TYPE 类型;
TYPE 可以是binary',text’, 或without-match' -a, --text 等同于 --binary-files=text -I 等同于 --binary-files=without-match -d, --directories=ACTION 操作目录的方式; ACTION 可以是read’, recurse',或skip’
-D, –devices=ACTION 操作设备、先入先出队列、套接字的方式;
ACTION 可以是read'或skip’
-R, -r, –recursive 等同于 –directories=recurse
–include=FILE_PATTERN 只查找匹配FILE_PATTERN 的文件
–exclude=FILE_PATTERN 跳过匹配FILE_PATTERN 的文件和目录
–exclude-from=FILE 跳过所有除FILE 以外的文件
–exclude-dir=PATTERN 跳过所有匹配PATTERN 的目录。
-L, –files-without-match 只打印不匹配FILEs 的文件名
-l, –files-with-matches 只打印匹配FILES 的文件名
-c, –count 只打印每个FILE 中的匹配行数目
-T, –initial-tab 行首tabs 分隔(如有必要)
-Z, –null 在FILE 文件最后打印空字符
文件控制:
-B, –before-context=NUM 打印以文本起始的NUM 行
-A, –after-context=NUM 打印以文本结尾的NUM 行
-C, –context=NUM 打印输出文本NUM 行
-NUM 等同于 –context=NUM
–color[=WHEN],
–colour[=WHEN] 使用标志高亮匹配字串;
WHEN 可以是always',never’或`auto’
-U, –binary 不要清除行尾的CR 字符(MSDOS 模式)
-u, –unix-byte-offsets 当CR 字符不存在,报告字节偏移(MSDOS 模式)

split

linux split含多个参数

apt-get

debian的源
说明:
1:deb/deb_src 表示获取安装包和源代码
2:http://mirrors.163.com/debian/ 国内一般使用这个,Debian软件资源库
3:stable 表示Debian系统的版本类型。stable/testing/unstable 三种

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
apt-get update # 更新软件包信息库。 
apt-get upgrade package_name1 package_name2 package_name3 ... # 升级指定软件包至最新版本
apt-get dist-upgrade #更新整个Debian系统
apt-get install package_name1 package_name2 package_name3 ... # 安装新的软件包,安装的软件包默认会存放在/var/cache/apt/archives目录下,以便以后重新安装。
如果已安装的软件包损坏了,你可通过–reinstall选项来重新安装。如:
apt-get --reinstall install package_name
使用–dry-run选项可使apt-get在安装软件包前进行测试,如:
apt-get install package_name --dry-run
apt-get remove package_name1 package_name2 package_name3 ... # 卸载指定软件包。
如果你想把该软件的配置文件也删除,可以用–purge选项,如:
apt-get --purge remove package_name
apt-get source package_name1 package_name2 package_name3 ... #下载指定软件包的源码包文件
apt-get build-dep #为源码包配置所需的构建依赖关系
apt-get dselect-upgrade # 通过dselect的“建议”和“推荐”功能更新系统。
apt-get clean #删除下载了的软件包, APT会把软件包下载到本地/var/cache/apt/archives/目录。
apt-get autoclean #删除已下载的旧版本的软件包。该命令类似于上面的命令,但它会有选择地删除旧版本的软件包
apt-get check #检查系统中已安装软件包的依赖性。

apt-cache add package_name #往源缓存加入一个软件包文件
apt-cache gencaches #并生成软件包和源代码包的缓存
apt-cache showpkg pkgname #显示软件的信息,包括版本号,安装状态和包依赖关系等。
apt-cache showsrc 显示源文件的各项记录
stats显示一些基本的统计信息
dump 简要显示整个缓存文件的内容
dumpavail 把所有有效的包文件列表打印到标准输出
unmet 显示所有未满足的依赖关系
apt-cache search pkgname 搜索软件包,可用正则表达式(apt-cache search libc*)
apt-cache show pkgname 以便于阅读的格式介绍该软件包
apt-cache depends pkgname 显示指定软件包所依赖的软件包
apt-cache rdepends pkgname 显示软件包的反向依赖关系,即有什么软件包需依赖你所指定的软件包
apt-cache pkgnames 列出所有软件包的名字
apt-cache dotty 生成可用 GraphVis 处理的软件包关系图
apt-cache xvcg 生成可用 xvcg 处理的软件包的关系图
apt-cache policy package_name 显示软件包的安装设置状态

### aptitude 命令
该命令是调用交互模式,进行包的管理操作,和apt-get命令类似。

aptitude [-S 文件名] [-u|-i]
install – 安装/升级软件包
remove – 卸载软件包
purge – 卸载软件包并删除其配置文件
hold – 将软件包置于保持状态
unhold – 取消对一个软件包的保持命令
markauto – 将软件包标记为自动安装
unmarkauto – 将软件包标记为手动安装
forbid-version – 禁止 aptitude 升级到某一特定版本的软件包。
update – 下载新/可升级软件包列表
upgrade – 执行一次安全的升级
dist-upgrade – 执行升级,可能会安装和卸载软件包
forget-new – 忘记哪些软件包是“新”的
search – 按名称 和/或 表达式搜索软件包
show – 显示一个软件包的详细信息
clean – 删除已下载的软件包文件
autoclean – 删除旧的已下载软件包文件
changelog – 查看一个软件包的变更日志
download – 下载软件包的 .deb 文件
reinstall – 下载并(可能)重新安装一个现在已经安装了的软件包

1
2

### apt-key 每个发布的deb包,都是通过密钥认证的,apt-key用来管理密钥。

apt-key list
列出已保存在系统中key。
apt-key add keyname
把下载的key添加到本地trusted数据库中。
apt-key del keyname
从本地trusted数据库删除key。
apt-key update
更新本地trusted数据库,删除过期没用的key。

1
2
3
4
5
6
7
8
9
10
11
12
13
14

## netstat

##安装lxde图标显示 "X", 没有文件夹图标的解决方法:
1. apt-get install libgdk-pixbuf2.0-dev
然后设置 => 外观 里面设置为可用的主题比如 tango 就可以了
2. http://askubuntu.com/questions/294834/some-icons-from-xfce4-panel-missing You can install latest development packages for the elementary icons theme from the elementary Xfce PPA (daily) . If you still encounter issues, feel free to report them on the project's GitHub tracker.
To install the icons, as root:
add-apt-repository ppa:landronimirc/elementary-xfce
apt-get update
apt-get install xubuntu-icon-theme


## 依赖关系问题 - 仍未被配置 子进程 已安装 post-installation 脚本 返回了错误号, 不用使用mv /var/lib/dpkg/info的方法

尝试自动修复
tiankonguse@tiankonguse:~$ sudo apt-get -f install
尝试修复依赖
tiankonguse@tiankonguse:~$ sudo dpkg –configure –pending
先清空缓存
sudo apt-get autoclean
sudo apt-get clean
sudo apt-get autoremove
然后卸载
sudo apt-get remove xxx
cd /var/lib/dpkg
sudo mv info info.bak
sudo mkdir info
sudo apt-get install -f
dpkg:警告:files list file for package ‘*‘ missing; assuming package has no files currently installed
解决

检查当前 dpkg库中残留的文件安装信息

dpkg -l | grep **

#手 动删除所有包,这一步可能仍然会 有相关错误信息报出
sudo dpkg -r * *

#这一 步很重要,彻底清除任何包相 关的信息
sudo dpkg -P
*
dpkg -l | grep

```

配置

*日志

+ 通用log: general_log_file        = /var/log/mysql/mysql.log
+ replication日志: server-id              = 1
    log_bin                        = /var/log/mysql/mysql-bin.log
    expire_logs_days        = 10
    max_binlog_size         = 100M
    binlog_do_db           = include_database_name
    binlog_ignore_db       = include_database_name

mysqld –help –verbose里面查看my.cnf的路径, 一般来说是 /etc/my.cnf > etc/mysql/my.cn > usr/etc/my.cnf > ~/.my.cnf

建表

1
2
3
4
5
CREATE TABLE `NewTable` (
...
PRIMARY KEY (`id`),
CONSTRAINT `pk_uid` FOREIGN KEY (`userid`) REFERENCES `blog_user` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION
)

##

ref:

https://code.launchpad.net/~percona-dev/perconatools/tpcc-mysql
https://github.com/junneyang/easybenchmarktesttool.git