基础级别命令汇总

今天想写个数据同步的cron命令,写完了却脑抽的忘了赋权的chmod命令了

看样子 短路的时候 总归是让人各种忧桑啊……

好吧 上网检索了一下 并将基础的一些命令给偷取过来吧^_^

1、显示日期的指令: date

2、显示日历的指令:cal



3、简单好用的计算器:bc


怎么10/100会变成0呢?这是因为bc预设仅输出整数,如果要输出小数点下位数,那么就必须要执行 scale=number ,那个number就是小数点位数,例如:

4、重要的几个热键[Tab],[ctrl]-c, [ctrl]-d

[Tab]按键—具有『命令补全』不『档案补齐』的功能

[Ctrl]-c按键—让当前的程序『停掉』

[Ctrl]-d按键—通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以用来取代exit

5、man

退出用q,

man -f man

6、数据同步写入磁盘:sync

输入sync,那举在内存中尚未被更新的数据,就会被写入硬盘中;所以,这个挃令在系统关机戒重新启劢乀前, 径重要喔!最好多执行几次!

7、惯用的关机指令:shutdown

此外,需要注意的是,时间参数请务必加入指令中,否则shutdown会自动跳到 run-level 1 (就是单人维护的登入情况),这样就伤脑筋了!底下提供几个时间参数的例子吧:

重启,关机: reboot, halt,poweroff

8、切换执行等级: init

Linux共有七种执行等级:

–run level 0 :关机
–run level 3 :纯文本模式
–run level 5 :含有图形接口模式
–run level 6 :重新启动

使用init这个指令来切换各模式:

如果你想要关机的话,除了上述的shutdown -h now以及poweroff之外,你也可以使用如下的指令来关机:

9、改变文件的所属群组:chgrp

10、改变文件拥有者:chown

他还可以顸便直接修改群组的名称

11、改变文件的权限:chmod

权限的设定方法有两种, 分别可以使用数字或者是符号来进行权限的变更。

–数字类型改变档案权限:

–符号类型改变档案权限:

12、查看版本信息等

13、变换目录:cd

14、显示当前所在目录:pwd

15、建立新目录:mkdir


不建议常用-p这个选项,因为担心如果你打错字,那么目录名称就回变得乱七八糟的

16、删除『空』的目录:rmdir

17、档案与目录的显示:ls


18、复制档案或目录:cp







19、移除档案或目录:rm



20、移动档案与目录,或更名:mv


21、取得路径的文件名与目录名:basename,dirname


22、由第一行开始显示档案内容:cat


23、从最后一行开始显示:tac(可以看出 tac 是 cat 的倒着写)

24、显示的时候,顺道输出行号:nl



25、一页一页的显示档案内容:more

26、与 more 类似,但是比 more 更好的是,他可以往前翻页:less

27、只看头几行:head

28、只看尾几行:tail

29、以二进制的放置读取档案内容:od


30、修改档案时间或新建档案:touch



31、档案预设权限:umask

32、配置文件档案隐藏属性:chattr



33、显示档案隐藏属性:lsattr

34、观察文件类型:file

35、寻找【执行挡】:which


36、寻找特定档案:whereis

37、寻找特定档案:locate

38、寻找特定档案:find


39、压缩文件和读取压缩文件:gzip,zcat


40、压缩文件和读取压缩文件:bzip2,bzcat


41、压缩文件和读取压缩文件:tar






SQLite数据库管理的相关命令

1.创建数据库

启动命令行,通过输入如下命令打开Shell模式的CLP:
[codesyntax lang=”text”]

sqlite3 test.db

[/codesyntax]
虽然我们提供了数据库名称,但如果该数据库不存在,SQLite实际上就未创建该数据库,直到在数据库内部创建一些内容时,SQLite才创建该数据库。

2.创建数据表

[codesyntax lang=”text”]

sqlite> create table Member(id integer primary key, name text, age integer,addr text);

[/codesyntax]
[codesyntax lang=”text”]

注:id为主键,该列默认具备自动增长的属性。

[/codesyntax]

3.插入数据

[codesyntax lang=”text”]

sqlite> insert into Member values(0,'wwl',21,'上海');//id=0的列必须不存在,否则会出错

或者
sqlite> insert into Member(name,age,addr) values('wwl',21,'上海');

[/codesyntax]

4.查询数据

sqlite>.mode column
sqlite>.headers on
sqlite> select * from Member;

注:select语句前面的两个命令(.headers和.mode)用于改善显示格式,可以不要。

5.创建视图和索引

[codesyntax lang=”text”]

sqlite> create view schema as select * from Member;
sqlite> create index Member_Idx on Member(id)

[/codesyntax]

6.导出数据

使用.dump命令可以将数据库对象导出成SQL格式。不带任何参数时,.dump将整个数据库导出为数据库定义语言(DDL)和数据库操作语言(DML)命令,适合重新创建数据库对象和其中的数据。如果提供了参数,Shell将参数解析作为表名或视图,导出任何匹配给定参数的表或视图,那些不匹配的将被忽略。

默认情况下.dump 命令的输出定向到屏幕。如:.dump

如果要将输出重定向到文件,请使用.dump[filename]命令,此命令将所有的输出重定向到指定的文件中。若要恢复到屏幕的输出,只需要执行.output stdout命令就OK了。
[codesyntax lang=”text”]

sqlite>.output file.sql 
sqlite>.dump 
sqlite>.output stdout

[/codesyntax]
注:如果file.sql不存在,将在当前工作目录中创建该文件。如果文件存在,它将被覆盖。

7.导入数据

有两种方法可以导入数据,用哪种方法取决于要导入的文件格式。如果文件由SQL语句构成,可以使用.read命令导入文件中包含的命令。如果文件中包含由逗号或其他分隔符分割的值(comma-swparated values,CSV)组成,可使用.import[file][table]命令,此命令将解析指定的文件并尝试将数据插入到指定的表中。

.read命令用来导入.dump命令创建的文件。如果使用前面作为备份文件所导出的file.sql,需要先移除已经存在的数据库对象,然后用下面的方法重新导入:
[codesyntax lang=”text”]

sqlite>drop table Member; 
sqlite>drop view schema; 
sqlite>.read file.sql

[/codesyntax]

8.备份数据库

有两种方式可以完成数据库的备份,具体使用哪一种取决于你希望的备份类型。SQL转储许是移植性最好的备份。

生成转储的标准方式是使用CLP.dump命令:sqlite3 test.db .dump >test.sql

在Shell中,可以将输出重定向到外部文件,执行命令,恢复到屏幕输出,如:
[codesyntax lang=”text”]

sqlite>.output file.sql 
sqlite>.dump 
sqlite>.output stdout 
sqlite>.exit

[/codesyntax]
同样,容易将SQL转储作为CLP的输入流实现数据库导入:

sqlite3 test.db <test.sql

备份二进制数据库知识比复制文件稍多做一点工作。备份之前需要清理数据库,这样可以释放一些已删除对象不再使用的空间。这数据库文件就会变小,因此二进制的副本也会较小:
[codesyntax lang=”text”]

sqlite3 test.db vacuum
cp test.db test.Backup

[/codesyntax]

9.其它命令

[codesyntax lang=”text”]

sqlite>select last_insert_rowid();  //获得最后插入的自动增长量值 
sqlite>.tabes            //返回所有的表和视图 
sqlite>.indices Member       //查看一个表的索引 
sqlite>.schema Member       //得到一个表或视图的定义(DDL)语句,如果没有提供表名,则返回所有数据库对象(table,view,index,triger)的定义语句

[/codesyntax]

Git rebase 详解

1.出现情况的背景:

当你提交的代码后,管理员发现,您的代码不能提交到服务器上,主要原因在于,你的commit 中和服务器中的有些commit不再同一时间轴上,即:你的有些commit要插入到服务器中的某些commit之间,这样就会造成代码的冲突。所以这个时候就要使用git rebase。

假如,你平时使用的分支叫new ,然后在这个分支上你刚提交过几个commit。

做法:

1.新建一个分支,并且代码和服务器中代码同步

[codesyntax lang=”text”]


git checkout origin/v2.0 -b temp

[/codesyntax]

2.为了保证新建的temp分支代码是最新的,可以多执行下面一步

[codesyntax lang=”text”]


git pull

[/codesyntax]

3.当你新建分支后,系统会自动checkout到temp分支上,此时

[codesyntax lang=”text”]


git checkout new

[/codesyntax]

4.合并代码,并整理

[codesyntax lang=”text”]


git rebase temp //会将temp分支的代码合并过来,并按照提交的顺序排序

[/codesyntax]

5. 因为顺序是重新整理的,所以肯定会出现冲突

6.解决冲突,最后git add * ,但不许要git commit

7.解决后,执行

[codesyntax lang=”text”]


git rebase --continue

[/codesyntax]

8.重新提交代码

[codesyntax lang=”text”]


git push for-*

[/codesyntax]

注意:如果要对某些代码的commit重新整理

1. 可以记住某个commit号

2. git rebase -i commit号

3. 会显示一个整理提交的界面,有很多参数,e。p。等等

4.将前面的参数改为e。则wq保存后,系统会自动让你重新修改commit内容

5.修改完成后,再git push for-*

Linux查看进程运行的完整路径

Linux在启动一个进程时,系统会在/proc下创建一个以PID命名的文件夹,在该文件夹下会有我们的进程的信息,其中包括一个名为exe的文件即记录了绝对路径,通过ll或ls –l命令即可查看。
[codesyntax lang=”bash”]

ll /proc/PID

[/codesyntax]

Linux查看进程运行的完整路径 三联

cwd符号链接的是进程运行目录;
exe符号连接就是执行程序的绝对路径;
cmdline就是程序运行时输入的命令行命令;
environ记录了进程运行时的环境变量;
fd目录下是进程打开或使用的文件的符号连接。

常用Git操作命令

1 赋权限

进入目录 cd .ssh/
命令:  ssh-keygen
获取key:  vim id_rsa.pub

2 安装

安装   apt-get install git-core
获得   git clone git://url
访问   http://url/gitweb

 

3 纳入版本控制:

 

git add *.txt     //添加指定文件
git add README    //添加单个文件
git add .         //添加所有文件包括子目录,但不包括空目录

 

4 提交:

git commit -m “no1”             //全部提交
git commit -m “no1” someFile    //提交指定文件
git commit -C HEAD -a —amend    //复用HEAD留言,增补提交(修改小错误,而不增加提交记录,掩盖自己的小马虎
-m “提交的说明”
-a 动把所有已经跟踪过的文件暂存,并提交.(工作目录中修改过的文件都提交到版本库,不需一个一个手动add了)
—amend 增补提交
-C 复用指定提交的提交留言
-c 打开编辑器在已有的提交基础上编辑修改

 

5 查看提交历史:

git log
这时“j”向下浏览,“k”向上浏览,“q”退出

 

6 问责:查明谁修改了代码

git blame hello.html            //查看修改过文件的人
git blame -L 12,+10 hello.html //12到22行  用”-L”参数在命令(blame)中指定开始和结束行:
blame还可以跟踪内容复制,文件复制

 

7 撤销缓存区的修改(没有commit的)

git checkout head 文件名 //撤销暂存区的修改
git checkout head readme.txt todo.txt
git checkout head *.txt
git checkout head . //撤销所有

 

8 反转提交:

git revert HEAD //创建一个反向的新提交抵消原来的提交改动
如果需要反转多个,必须从最后的开始反转, 加 -n可以不马上提交,之后一起提交。
git revert -n HEAD
git revert -n 54efhds
git commit -m “revert head and 54efhds”

 

9 复位:还没有commit,让工作目录回到上次提交时的状态

git reset —hard HEAD //所有未提交的内容清空,这会让”git diff” 和”git diff —cached”命令的显示法都变为空
git reset —soft HEAD //复位版本库,暂存差异,便于提交中发现错误需要更改时有用(例如私人密码放到里边了

 

10 分支:

在当前分支末梢建立分支:
git branch RB_1.0(建立分支不会自动切换过去
切换分支:
git checkout RB_1.0(切换到RB_1.0分支
创建并切换分支:
git checkout -b RB_1.0(简化上边2步操作
删除分支:
git branch -d RB_1.0
基于某次提交、分支或标签创建新分支:
git branch RB_1.0 master
git branch RB_1.0 6fe57de0
git branch Rb_1.01 1.0
查看分支:
git branch -r //显示远程分支
git branch -a //列出所有分支
分支重命名:
git branch -m master mymaster
-M 大写M会覆盖同名的分支
合并分支:
直接合并:
git merge 想合并到当前分支的源分支名
git merge —no-commit 分支 //合并但不提交
压合合并:将分支压合成一条commit记录,并合并过来
git merge —squash 某bug分支
git commit -m “修复某bug”
拣选合并:只合并一个提交
git cherry-pick 321d76f
如果需要连续拣选,就需要加 -n参数
然后再git commit ,但不要加-m参数,编辑器就会使用刚拣选的提交留言作为现在的留言。

 

11 标签Tag:

查看标签:
git tag
创建标签:
git tag 1.0 //在当前分支最后一次提交创建标签
git tag 1.0 RB_1.0 //基于RB_1.0分支的最新踢脚创建标签
git tag 1.0 ae468d8kt //为某次提交创建标签
检出标签:
git checkout 1.0 //检出标签与检出分支一样操作,但检出标签后用git branch查看本地分支会发现你现在不再任何分支上
这时你不应该修改,而应该立即基于此标签创建一个分支
git checkout -b from-1.0

 

12 变基:

1 git rebase RB_1.01 //也许修改过一个bug,希望新版本变基到RB_1.01分支上
2 手动解决冲突 //如果解决不了直接git rebase -skip或-abort来跳过特定提交或完全放弃变基
3 git add xxx.html //冲突解决
4 git rebase —continue
//—onto参数可以改写历史抹掉中间的参数,将倒数第一个参数变基到倒数第3个参数,为防止出错建议在试验性分支上先试验。
rebase -i 可以排序历史记录,多个提交合并为1个,一个提交分解成多个提交 ,
详见版本控制之道p86 ,需要编辑器支持,windows记事本不行

 

13 远程相关:

git clone git://github.com/schacon/grit.git //从现有仓库克隆
git clone git://github.com/schacon/grit.git mygrit //换名,唯一区别就是新建的目录成了mygrit,其他都一样
添加远程仓库:
git remote add pb git://github.com/paulboone/ticgit.git
clone会默认添加origin仓库,如果原本用git init创建的版本库,后来又想提交到远程版本库,就可以用下边的办法
git remote add origin git@example.com:/xxxxxx
查看远程分支:
git remote -v //查看远程仓库,默认clone后,应该有一个origin仓库,-v显示对应的clone地址
git remote show origin //查看远程仓库信息
远程仓库重命名和删除:
git remote rename pb paul
git remote rm paul
获取数据:
现在pb/master可以在本地访问了,你可以合并到自己的某个分支,或者切换到这个分支看看有什么有趣的更新
git pull 抓取数据合并到工作目录中当前分支
推送数据:
git push [remote-name] [branch-name] //默认为 git push origin master
git push origin serverfix //推送分支,其实是下边一句的简化,提取我的 serverfix 并更新到远程仓库的 serverfix
git push origin serverfix:serferfix
git push origin :serverfix //这个语法用于删除,只要把分号前留空

 

14 其他:

git gc //垃圾回收,每隔一段时间例如一个月运行一次可以减少磁盘占用空间。
git reflog //最后的保障,列出误删的东东
git bisect //二分查找,版本控制之道p124页,略
归档版本库,导出压缩包:
git archive —format=格式 —prefix=目录/ 版本>压缩包.zip
git archive —format=zip head>test.zip
git archive —format=tar —prefix=mysite-1.0/ 1.0 | gzip>mysite-1.0.tar.gz
git archive —format=zip —prefix=mysite-1.0/ 1.0 >mysie-1.0.zip
通过git pull更新仓库,使用git init-db初始化自己的仓库。
commit:
git commit -a -e        提交全部修改文件,并调用vim编辑提交日志。
git reset HEAD^ or
git reset HEAD~1        撤销最后一次提交。
git reset –hard HEAD^  撤销最后一次提交并清除本地修改。
git reset SHA1          回到SHA1对应的提交状态。
add/delete/ls:
git add -a              添加所有文件。除了.gitignore文件中的文件。
git rm file             从git仓库中删除文件。
git commit              添加或是删除后要提交。
git ls-files -m         显示修改过的文件。
git ls-files            显示所有仓库中的文件。
这些事情都可以先在本地开 local branch 做,而不需要立即 Push 分享给别人。
git branch name       建立本地 local branch
git branch -m old_name new_name    改名字 (如果有同名会失败,改用 -M 可以强制覆盖)
git branch           列出目前有那些 branch 以及目前在那个 branch
git checkout name      切换 branch (注意到如果你有档案修改了却还没 commit,会不能切换 branch,解法稍后会谈)
git checkout -b name       本地建立 branch 并立即 checkout 切换过去
git branch -d  name       删除 local branch
git merge name     合併另一个 branch,若没有 conflict 衝突会直接 commit。若需要解决衝突则会再多一个 commit。
git merge –squash <branch_name> 将另一个 branch 的 commit 合併为一笔,特别适合需要做实验的 fixes bug 或 new feature,最后只留结果。合併完不会帮你先 commit。
git cherry-pick 321d76f 只合併特定其中一个 commit。如果要合併多个,可以加上 -n 指令就不会先帮你 commit,这样可以多 pick几个要合併的 commit,最后再 git commit 即可。
查看 分支版本
git branch -a
除了master之外,我们还可以随便创建分支,然后push到服务器上去。
$ git add .
$ git commit -m “”
$ git pull origin camp
$: git push origin camp
远程分支和本地分支需要区分,所以,在从服务器上拉取特定分支的时候,需要指定本地分支名字。
$: git branch product origin/product
更新分支到本地
$: git pull origin camp

37个常用Shell组合命令

序号

任务

命令组合

1

删除0字节文件

find . -type f -size 0 -exec rm -rf {} \;
find . type f -size 0 -delete

2

查看进程,按内存从大到小排列

ps -e -o “%C : %p : %z : %a”|sort -k5 -nr

3

按cpu利用率从大到小排列

ps -e -o “%C : %p : %z : %a”|sort -nr

4

打印说cache里的URL

grep -r -a jpg /data/cache/* | strings | grep “http:” | awk -F’http:’ ‘{print “http:”$2;}’

5

查看http的并发请求数及其TCP连接状态

netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’

6

sed在这个文里Root的一行,匹配Root一行,将no替换成yes。

sed -i ‘/Root/s/no/yes/’ /etc/ssh/sshd_config

7

如何杀掉mysql进程

ps aux |grep mysql |grep -v grep  |awk ‘{print $2}’ |xargs kill -9
killall -TERM mysqld
kill -9 `cat /usr/local/apache2/logs/httpd.pid`

8

显示运行3级别开启的服务(从中了解到cut的用途,截取数据)

ls /etc/rc3.d/S* |cut -c 15-

9

如何在编写SHELL显示多个信息,用EOF

cat << EOF
+————————————————————–+
|   === Welcome to Tunoff services ===                         |
+————————————————————–+
EOF

10

for的用法(如给mysql建软链接)

cd /usr/local/mysql/bin
for i in *
do ln /usr/local/mysql/bin/$i /usr/bin/$i
done

11

取IP地址

ifconfig eth0 |grep “inet addr:” |awk ‘{print $2}’|cut -c 6-
ifconfig | grep ‘inet addr:’| grep -v ’127.0.0.1′ |cut -d: -f2 | awk ‘{ print $1}’

12

内存的大小

free -m |grep “Mem” | awk ‘{print $2}’

13

查看80端口的连接,并排序

netstat -an -t | grep “:80″ | grep ESTABLISHED | awk ‘{printf “%s %s\n”,$5,$6}’ | sort

14

查看Apache的并发请求数及其TCP连接状态

netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’

15

统计一下服务器下面所有的jpg的文件的大小

find / -name *.jpg -exec wc -c {} \;|awk ‘{print $1}’|awk ‘{a+=$1}END{print a}’

16

CPU的数量

cat /proc/cpuinfo |grep -c processor

17

CPU负载

cat /proc/loadavg

18

CPU负载

mpstat 1 1

19

内存空间

free

20

磁盘空间

df -h

21

如发现某个分区空间接近用尽,可以进入该分区的挂载点,用以下命令找出占用空间最多的文件或目录

du -cks * | sort -rn | head -n 10

22

磁盘I/O负载

iostat -x 1 2

23

网络负载

sar -n DEV

24

网络错误

netstat -i
cat /proc/net/dev

25

网络连接数目

netstat -an | grep -E “^(tcp)” | cut -c 68- | sort | uniq -c | sort -n

26

进程总数

ps aux | wc -l

27

查看进程树

ps aufx

28

可运行进程数目

vmwtat 1 5

29

检查DNS Server工作是否正常,这里以61.139.2.69为例

dig www.baidu.com @61.139.2.69

30

检查当前登录的用户个数

who | wc -l

31

日志查看、搜索

cat /var/log/rflogview/*errors
grep -i error /var/log/messages
grep -i fail /var/log/messages
tail -f -n 2000 /var/log/messages

32

内核日志

dmesg

33

时间

date

34

已经打开的句柄数

lsof | wc -l

35

网络抓包,直接输出摘要信息到文件。

tcpdump -c 10000 -i eth0 -n dst port 80 > /root/pkts

36

然后检查IP的重复数 并从小到大排序 注意 “-t\  +0″ 中间是两个空格,less命令的用法。

less pkts | awk {‘printf $3″\n”‘} | cut -d. -f 1-4 | sort | uniq -c | awk {‘printf $1″ “$2″\n”‘} | sort -n -t\  +0

37

kudzu查看网卡型号

kudzu –probe –class=network

 

备份工具tar详细用法

tar是Linux环境下最常用的备份工具之一。tar(taparchive)原意为操作磁带文件,但基于Linux的文件操作机制,同样也可适用于普通的磁盘文件。
tar可用于建立、还原、查看、管理文件,也可方便的追加新文件到备份文件中,或仅更新部分的备份文件,以及解压、删除指定的文件。
熟悉其常用参数,能方便日常的系统管理工作。

一、版本

还是那句,不同的操作系统,tar的命令参数是有点区别的:
[codesyntax lang=”bash”]

# tar --version
tar (GNU tar) 1.14

[/codesyntax]

二、简单操作

命令格式:
[codesyntax lang=”bash”]

tar [options] [tarfile] [other-files]
tar--long-option -function-options files

[/codesyntax]

tar可使用的参数非常多,先列举几个最常用的参数:
[codesyntax lang=”text”]

-t, --list
	列出归档文件内容目录
-x, --extract, --get
	从归档文件中解析文件
-c, --create
	创建新的归档文件
上面三个参数,不能同时存在,仅能使用其中一个,即t/x/c
-f file, --file=file
	指定备份文件,或设备,例如磁带机/dev/st0
-v, --verbose
	显示命令的执行过程
-Z, --compress, --uncompress
	使用compress命令处理备份文件
-z, --gzip, --gunzip, --ungzip
	使用gzip命令处理备份文件
-j, --I, --bzip
	使用bzip2命令处理备份文件
	-z和-j都是在备份文件打包后才进行压缩的操作的,并且,该操作会影响其他的参数。
-C directory, --directory=directory
	先进入指定的目录,再释放

[/codesyntax]

举例:
把/etc目录中所有的文件打包为etc.tar文件
[codesyntax lang=”bash”]

tar -cvf /tmp/etc.tar /etc

[/codesyntax]
把/etc目录中所有的文件打包并使用gzip压缩为etc.tar.gz文件
[codesyntax lang=”bash”]

tar -zcvf /tmp/etc.tar.gz /etc

[/codesyntax]
把/etc目录中所有的文件打包并使用bzip2压缩为etc.tar.bz2文件
这里的tar.gz或tar.bz2都是惯例,并不是特定条件。它仅为方便标识,也可将其设置成如tgz等。但建议遵循惯例
[codesyntax lang=”bash”]

tar -jcvf /tmp/etc.tar.bz2 /etc

[/codesyntax]
查看备份包中的内容,若为已经压缩的文件,需加上-z或者-j参数
[codesyntax lang=”bash”]

tar -ztvf /tmp/etc.tar.gz

[/codesyntax]
默认情况下,tar打包时都是使用相对路径的。所以释放时需要先进入目录目录,然后再解压。
同样的,根据使用的压缩方式,应加上-z或者-j参数
[codesyntax lang=”bash”]

cd /tmp && tar -zxvf /tmp/etc.tar.gz

[/codesyntax]
PS:这是另一种写法,结果和上面的相同,其会先进入/tmp目录,然后再释放包的
[codesyntax lang=”bash”]

tar -zxvf /tmp/etc.tar.gz -C /tmp

[/codesyntax]
释放单个etc/passwd文件,正如前面提到的,tar包中的是相对路径,所以不能使用“/etc/passwd”
并且,这里不能使用-C参数,释放文件是当前路径的相对路径,并带目录释放
[codesyntax lang=”bash”]

tar -zxvf /tmp/etc.tar.gz etc/passwd

[/codesyntax]
tar还可以支持很多额外的参数,方便我们在备份和释放的时候进行控制。

三、更多参数

1、备份

[codesyntax lang=”text”]

-d, --diff, --compare
	找出归档文件和文件系统的不同之处
-r, --append
	将文件附加到归档文件之后
-u, --update
	只附加比归档中新的文件
-A, --catenate
	将 tar 文件附加到归档文件之后
--concatenate
	与 -A 相同
--delete
	从归档文件中删除 (不能在磁带上!)
-N date, --newer=date, --after-date=date
	只将比指定日期更新的文件保存到备份文件
--exclude=pattern
	排除符合查找模式的文件
-P, --absolute-names
	备份文件中的文件名使用绝对路径,而不移除文件名前的“/”,默认是相对路径的
-l, --one-file-system
	复制文件或目录存放的文件系统必须和tar命令当前执行的文件系统相同,否则不执行;也就是讲,不处理其他分区的文件。(可忽略mount挂载分区的问题)
--mode=permissions
	备份时,把加入备份文件中的文件属性修改为指定的属性,格式和chmod命令接受的格式相同
--group=group
	备份时,把加入备份文件中的文件所属组设定成指定的组
--owner=owner
	备份时,把把加入备份文件中的文件所有者设定成指定的用户
--numeric-owner
	以UID和GID代替用户名和组名
--recursion
	递归模式(默认)
--no-recursion
	不进行递归处理,即不把指定目录下的所有文件和文件夹都备份
--newer-mtime=date
	仅增加指定日期后修改过内容的文件到备份文件中
--anchored
	排除时,排除匹配式中匹配整个文件路径(默认)
--no-anchored
	排除时,排除匹配式中可匹配“/”后的路径
--ignore-case
	排除时,排除匹配式中忽略大小写
--no-ignore-case
	排除时,排除匹配式中大小写敏感(默认)
--wildcards
	排除匹配式支持通配符(默认)
--no-wildcards
	排除匹配式不支持通配符
--wildcards-match-slash
	排除匹配式的通配符匹配“/”(默认)
--no-wildcards-match-slash
	排除匹配式的通配符不匹配“/”
-X file, --exclude-from file
	指定样式文件,供程序执行时剔除符合条件的文件
--remove-files
	删除已经加入到备份文件中的文件

[/codesyntax]
举例:
创建当前目录的全备份到backup.tar文件
(使用find的原因是,这样可以打包所有隐含文件或不符合命令规范的文件和目录)
[codesyntax lang=”bash”]

tar cvf - `find . -print` > backup.tar

[/codesyntax]
比2005年6月1日新的文件才会备份
[codesyntax lang=”bash”]

tar -N '2005/06/01' -zcvf home.tar.gz /home

[/codesyntax]
除/home/dmtsai目录外,/home和/etc目录的所有东西都打包
[codesyntax lang=”bash”]

tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

[/codesyntax]
删除etc.tar文件中的etc/pbm2ppa.conf文件
[codesyntax lang=”bash”]

tar --delete etc/pbm2ppa.conf -vf etc.tar

[/codesyntax]
把tmp.tar文件附加到etc.tar后面
[codesyntax lang=”bash”]

tar -A tmp.tar -vf etc.tar

[/codesyntax]
根据-T参数后的样式文件list.txt,打包/etc中指定的文件,同样的,list.tx默认也是相对路径的
[codesyntax lang=”bash”]

find . -name "*.d" -o -name "*.conf" > list.txt
	tar -T list.txt -czvf etc.tar.gz /etc

[/codesyntax]
通过管道,使用一条命令实现上面相同的功能
[codesyntax lang=”bash”]

find . -name "*.d" -o -name "*.conf" | tar -czvf etc.tar.gz -T -

[/codesyntax]

值得注意几个地方:
1)-f后面必须紧跟备份文件,xxx.tar或者xxx.tar.gz
2)使用–delete、-u、-r、-A的时候,后面跟的备份文件都必须为未压缩的,若备份文件已经压缩,需要使用gunzip先解压,操作完后再gzip;
也就是说,不能对tar.gz、tar.bz2等文件直接操作的;
3)备份打包时,默认为相对路径;而排除匹配式默认也是全路径匹配的
所以,在打包时,会提示:“tar: Removing leading `/’ from member names”
除非你使用-P参数或特定的参数指定

2、释放

[codesyntax lang=”text”]

-k, --keep-old-files
	还原备份文件时,不覆盖已存在的文件
-m, --modification-time, --touch
	还原文件时,不变更文件的更改时间
-p, --same-permissions
	解析许可权限信息,即保留备份文件中的权限信息
-s, --same-order, --preserve-order
	以与备份文件相同的顺序还原文件
--preserve
	等于同时设置-p和-s
--no-same-permissions
	不解析许可权限信息,这是普通用户的默认设置,仅对影响管理员的操作有影响
--no-same-owner
	不使用备份文件中的所有者信息,而以您自己的身份解析文件
--same-owner
	使用相同的文件所有者还原文件
--overwrite
	覆盖已经存在的文件和目录
--overwrite-dir
	覆盖已经存在的目录
--recursive-unlink
	释放前,先删除整个目录下所有文件的连接

[/codesyntax]
举例:
释放文件时,设置为备份文件中的相同所有者(仅对管理员而言)
[codesyntax lang=”bash”]

tar --same-owner -xzvf etc.tar.gz

[/codesyntax]
通过管道,把/etc目录用tar整个“拷贝”到/backup/etc,而不用建立任何临时文件
因为根本不需要生成备份包文件,所以这里不需要-z参数
[codesyntax lang=”bash”]

tar cvf - /etc | tar xvf - -C /backup/etc

[/codesyntax]
这里同上面的原理是一样的,只不过通过ssh直接“拷贝”到远端机器上而已
配合ssh密钥匹配,可实现不用人工干预的备份工作
[codesyntax lang=”bash”]

tar cvf - /etc | (ssh root@192.168.228.244 'tar xvf - -C /backup/etc')

[/codesyntax]

3、操作磁带设备

部分参数只适用于磁带设备,不适用于常规的磁盘文件。
[codesyntax lang=”text”]

-K file, --starting-file=file
	从指定的文件开始还原(按顺序)
-L length, --tape-length=length
	设置磁带的容量,单位为1024字节(bytes)
-M, --multivolume
	在建立、还原备份文件或列出其中内容时,采用多卷模式(不能对文件操作)
-V name, --label=name
	建立使用指定卷标的备份文件
-W, --verify
	写入备份文件后,校验文件是否正常
-F script, --info-script=script, --new-volume-script=script
	更换磁带时执行指定的脚本文件,必须与参数-M同时使用

[/codesyntax]
举例:
把/bin、/usr/bin目录都打包到st0磁带设备中
[codesyntax lang=”bash”]

	tar cvf /dev/st0 /bin /usr/bin

[/codesyntax]
把old.dmp文件追加到st0磁带中(使用cvf,会删除原来的文件的)
[codesyntax lang=”bash”]

	tar rvf /dev/st0 old.dmp

[/codesyntax]

4、其他

还有一些控制参数这里不详细讨论了,请自行测试。
但提醒一句,-T参数比较重要哦。
[codesyntax lang=”text”]

--null
-T
	从null设备读取文件名,覆盖-C的设置
-o, --old-archive, --portability
	将数据写入备份文件时使用V7格式
--posix
	将数据写入备份文件时使用POSIX格式
-G, --incremental
	处理旧GNU格式的增量备份
--rsh-command=command
	不使用rsh命令连接远程主机,而使用指定的命令进行
--suffix=suffix
	指定要删除文件前备份文件,该备份文件使用的后缀,默认是“~”
--totals
	创建备份文件时,列出已建立的备份文件的大小
tar --totals -cvf tmp.tar tmp/
-R, --block-number
	在输出信息时,一同block number信息
-S, --sparse
	若文件中有大量连续0字节时,将该文件保存成稀疏文件
-T file, --files-from=file
	指定样式文件,文件内容为一个或多个条件样式,供程序还原或创建符合指定条件的文件
--use-compress-program=program
	使用指定的压缩程序对备份文件压缩或解压
--volno-file=FILE
	使用或更新FILE文件中指定的卷号码
-w, --interactive, --confirmation
	当遇到问题时,要求用户先确认
-B, --read-full-records
	读取数据是重设扇区大小,仅适用于BSD 4.2的管道操作
-O, --to-stdout
	把从备份文件里还原的文件输出到标准输出设备
--version
	版本信息
--help
	帮助信息

[/codesyntax]

db2look导出ddl 详细用法

最近需要对DB2中的数据进行数据备份  虽然可以用db2backup进行整个数据库的全备份
但是如果只要备份其中的部分表项或者是要进行跨平台数据备份的话 使用db2look未尝不是一个好的选择
而在进行数据备份的时候 第一步需要做的事情就是导出表的表结构  而在此时使用db2look则是一个最优的方式

导出所有对象的ddl:db2look -d -e -a -l -o dbname.ddl
导出特定表ddl:db2look -d -e -t -o tableName.ddl
说明:(d指定数据库,e表示要导出ddl,a表示所有对象,l表示表空间及缓冲池对象,o表示DDL文件的输出地址)

好吧,话不多说 DB2的db2look命令诠释如下:
db2look 版本 8.2
db2look:生成 DDL 以便重新创建在数据库中定义的对象
语法:
[codesyntax lang=”text”]

db2look -d DBname [-e] [-u Creator] [-z Schema] [-t Tname1 Tname2...TnameN] [-tw Tname] [-h] [-o Fname] [-a]
[-m] [-c] [-r] [-l] [-x] [-xd] [-f] [-fd] [-td x] [-noview] [-i userID] [-w password]
[-v Vname1 Vname2 ... VnameN]
[-wrapper WrapperName] [-server ServerName] [-nofed]
db2look -d DBname [-u Creator] [-s] [-g] [-a] [-t Tname1 Tname2...TnameN]
[-p] [-o Fname] [-i userID] [-w password]
db2look [-h]

-d: 数据库名称 这必须指定,不然怎么知道是需要对哪个表进行操作呢~~
-e: 抽取复制数据库所需要的 DDL 文件。此选项将生成包含 DDL 语句的脚本。
可以对另一个数据库运行此脚本以便重新创建数据库对象
此选项可以和 -m 选项一起使用
-u: 创建程序标识:若 -u 和 -a 都未指定,则将使用 $USER
如果指定了 -a 选项,则将忽略 -u 选项
-z: 模式名:如果同时指定了 -z 和 -a,则将忽略 -z
联合部分的模式名被忽略
-t: 生成指定表的统计信息
可以指定的表的数目最多为 30
-tw: 为名称与表名的模式条件(通配符)相匹配的表生成 DDL
当指定了 -tw 选项时,-t 选项会被忽略
-v: 只为视图生成 DDL,当指定了 -t 时将忽略此选项
-h: 更详细的帮助消息
-o: 将输出重定向到给定的文件名
如果未指定 -o 选项,则输出将转到 stdout
-a: 为所有创建程序生成统计信息
如果指定了此选项,则将忽略 -u 选项
-m: 在模拟方式下运行 db2look 实用程序
此选项将生成包含 SQL UPDATE 语句的脚本
这些 SQL UPDATE 语句捕获所有统计信息
可以对另一个数据库运行此脚本以便复制初始的那一个
当指定了 -m 选项时,将忽略 -p、-g 和 -s 选项
-c: 不要生成模拟的 COMMIT 语句
除非指定了 -m 或 -e,否则将忽略此选项
将不生成 CONNECT 和 CONNECT RESET 语句
省略了 COMMIT。在执行脚本之后,需要显式地进行落实。
-r: 不要生成模拟的 RUNSTATS 语句
缺省值为 RUNSTATS。仅当指定了 -m 时,此选项才有效
-l: 生成数据库布局:数据库分区组、缓冲池和表空间。
-x: 如果指定了此选项,则 db2look 实用程序将生成授权 DDL
对于现有已授权特权,不包括对象的原始定义器
-xd: 如果指定了此选项,则 db2look 实用程序将生成授权 DDL
对于现有已授权特权,包括对象的原始定义器
-f: 抽取配置参数和环境变量
如果指定此选项,将忽略 -wrapper 和 -server 选项
-fd: 为 opt_buffpage 和 opt_sortheap 以及其它配置和环境参数生成 db2fopt 语句。
-td: 将 x 指定为语句定界符(缺省定界符为分号(;))
应该与 -e 选项一起使用(如果触发器或者 SQL 例程存在的话)
-p: 使用明文格式
-s: 生成 postscript 文件
此选项将为您生成 postscript 文件
当设置了此选项时,将除去所有 latex 和 tmp ps 文件
所需的(非 IBM)软件:LaTeX 和 dvips
注意:文件 psfig.tex 必须在 LaTeX 输入路径中
-g: 使用图形来显示索引的页访存对
必须安装 Gnuplot,并且 <psfig.tex> 必须在您的 LaTeX 输入路径中
还将随 LaTeX 文件一起生成 <filename.ps> 文件
-i: 登录到数据库驻留的服务器时所使用的用户标识
-w: 登录到数据库驻留的服务器时所使用的密码
-noview: 不要生成 CREATE VIEW ddl 语句
-wrapper: 为适用于此包装器的联合对象生成 DDL
生成的对象可能包含下列各项:
包装器、服务器、用户映射、昵称、类型映射、
函数模板、函数映射和索引规范
-server: 为适用于此服务器的联合对象生成 DDL
生成的对象可能包含下列各项:
包装器、服务器、用户映射、昵称、类型映射、
函数模板、函数映射和索引规范
-nofed: 不要生成 Federated DDL
如果指定此选项,将忽略 -wrapper 和 -server 选项

[/codesyntax]

示例:

[codesyntax lang=”sql”]

 db2look -d TEST -u iprayz -e -o db2look.sql
– 这将生成由用户 iprayz 创建的所有表和联合对象的 DDL 语句
– db2look 输出被发送到名为 db2look.sql 的文件中

 db2look -d TEST -z myscm1 -e -o db2look.sql
– 这将为模式名为 MYSCM1 的所有表生成 DDL 语句
– 还将生成 $USER 创建的所有联合对象的 DDL。
– db2look 输出被发送到名为 db2look.sql 的文件中

 db2look -d TEST -u iprayz -m -o db2look.sql
– 这将生成 UPDATE 语句以捕获关于用户 iprayz 创建的表/昵称的统计信息
– db2look 输出被发送到名为 db2look.sql 的文件中

db2look -d TEST -u iprayz -e -wrapper W1 -o db2look.sql
– 这将生成由用户 iprayz 创建的所有表的 DDL 语句
– 还将生成适用于包装器 W1 的用户 iprayz 所创建所有联合对象的 DDL
– db2look 输出被发送到名为 db2look.sql 的文件中

 db2look -d TEST -u iprayz -e -server S1 -o db2look.sql
– 这将生成由用户 iprayz 创建的所有表的 DDL 语句
– 还将生成适用于服务器 S1 的用户 iprayz 所创建所有联合对象的 DDL
– db2look 输出被发送到名为 db2look.sql 的文件中

[/codesyntax]至此,表结构就出来了。
接下来要做的就是将数据填充到该表中了…..

Linux查看系统信息

查看主板的序列号:
[codesyntax lang=”bash”]

dmidecode | grep -i ’serial number’

[/codesyntax]

用硬件检测程序kuduz探测新硬件:
[codesyntax lang=”bash”]

service kudzu start ( or restart)

[/codesyntax]

查看CPU信息:
[codesyntax lang=”bash”]

cat /proc/cpuinfo [dmesg | grep -i 'cpu'][dmidecode -t processor]

[/codesyntax]

查看内存信息:
[codesyntax lang=”bash”]

cat /proc/meminfo [free -m][vmstat]

[/codesyntax]

查看板卡信息:
[codesyntax lang=”bash”]

cat /proc/pci

[/codesyntax]

查看显卡/声卡信息:
[codesyntax lang=”bash”]

lspci |grep -i ‘VGA’[dmesg | grep -i 'VGA']

[/codesyntax]

查看网卡信息:
[codesyntax lang=”bash”]

dmesg | grep -i ‘eth’[cat /etc/sysconfig/hwconf | grep -i eth][lspci | grep -i 'eth']

[/codesyntax]

查看PCI信息:
[codesyntax lang=”bash”]

lspci (相比cat /proc/pci更直观)

[/codesyntax]

查看USB设备:
[codesyntax lang=”bash”]

cat /proc/bus/usb/devices

[/codesyntax]

查看键盘和鼠标:cat /proc/bus/input/devices
[/codesyntax]

查看系统硬盘信息和使用情况:
[codesyntax lang=”bash”]

fdisk & disk – l & df

[/codesyntax]

查看各设备的中断请求(IRQ):cat /proc/interrupts
[/codesyntax]

查看系统体系结构:
[codesyntax lang=”bash”]

uname -a

[/codesyntax]

查看及启动系统的32位或64位内核模式:
[codesyntax lang=”bash”]

isalist –v [isainfo –v][isainfo –b]

[/codesyntax]

dmidecode查看硬件信息,包括bios、cpu、内存等信息

测定当前的显示器刷新频率:
[codesyntax lang=”bash”]

/usr/sbin/ffbconfig –rev /?

[/codesyntax]

查看系统配置:
[codesyntax lang=”bash”]

/usr/platform/sun4u/sbin/prtdiag –v

[/codesyntax]

查看当前系统中已经应用的补丁:
[codesyntax lang=”bash”]

showrev –p

[/codesyntax]

显示当前的运行级别:
[codesyntax lang=”bash”]

who –rH

[/codesyntax]

查看当前的bind版本信息:
[codesyntax lang=”bash”]

nslookup –class=chaos –q=txt version.bind

[/codesyntax]

查看硬件信息:
[codesyntax lang=”bash”]

dmesg | more 

[/codesyntax]

显示外设信息, 如usb,网卡等信息:
[codesyntax lang=”bash”]

lspci 

[/codesyntax]

查看已加载的驱动:
[codesyntax lang=”bash”]

lsnod 

[/codesyntax]

查看当前处理器的类型和速度(主频):
[codesyntax lang=”bash”]

lshw
psrinfo -v 

[/codesyntax]

打印当前的OBP版本号:
[codesyntax lang=”bash”]

prtconf -v 

[/codesyntax]

查看硬盘物理信息(vendor, RPM, Capacity):
[codesyntax lang=”bash”]

iostat –E 

[/codesyntax]

查看磁盘的几何参数和分区信息:
[codesyntax lang=”bash”]

prtvtoc /dev/rdsk/c0t0d0s 

[/codesyntax]

显示已经使用和未使用的i-node数目:
[codesyntax lang=”bash”]

df –F ufs –o i 

[/codesyntax]

[codesyntax lang=”bash”]

isalist –v

[/codesyntax]

对于“/proc”中文件可使用文件查看命令浏览其内容,文件中包含系统特定信息:

Cpuinfo 主机CPU信息
Dma 主机DMA通道信息
Filesystems 文件系统信息
Interrupts 主机中断信息
Ioprots 主机I/O端口号信息
Meninfo 主机内存信息
Version Linux内存版本信息

备注:
proc – process information pseudo-filesystem 进程信息伪装文件系统