一、实用命令
1、远程文件复制(scp)
scp:secure copy
scp [参数] [原路径] [目的路径]
- 参数: -r 对于目录递归复制
eg:scp -r root@10.6.159.147:/opt/spft/test /opt/soft
2、定时任务(crontab)
contab [-u username] [-l | -e | -r]
- 参数:
-l: 列出当前的定时任务
-r:删除所有的定时任务
-e:编辑定时任务(单个删除) - -e的结果
* * * * * 命令 (分 时 日 月 周 命令)
* 代表任意值; ,逗号代表多个值; -减号代表范围;/n代表每隔n个单位
- 搭配使用anacron命令,防止在该执行时由于没有执行(掉电等原因),恢复后重新执行。
- 相关文件 /etc/crontab,系统管理时用到
3、下载(wget)
wget支持HTTP,HTTPS和FTP协议,可以使用HTTP代理
- wget [参数] [URL地址]
- 参数:
-O:下载后重命名
-b:后台下载
wget http://www.minjieren.com/wordpress-3.1-zh_CN.zip
wget -O wordpress.zip http://www.minjieren.com/download.aspx?id=1080
4、查看程序各个段的大小 size
/opt/app/todeav1/colin/tests# size main
text data bss dec hex filename
1259 540 16 1815 717 main
5、top(Linux下的任务管理器)
$top
top - 09:14:56 up 264 days, 20:56, 1 user, load average: 0.02, 0.04, 0.00
Tasks: 87 total, 1 running, 86 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.2%st
Mem: 377672k total, 322332k used, 55340k free, 32592k buffers
Swap: 397308k total, 67192k used, 330116k free, 71900k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 2856 656 388 S 0.0 0.2 0:49.40 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 7:15.20 ksoftirqd/0
4 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
- 第一行:
- 09:14:56 : 系统当前时间
- 264 days, 20:56 : 系统开机到现在经过了多少时间
- 1 users : 当前2用户在线
- load average: 0.02, 0.04, 0.00: 系统1分钟、5分钟、15分钟的CPU负载信息
- 第二行:任务,87个进程
- 剩下的应该能看懂
6、free(查看可用内存)
/opt/app/tdev1$free
total used free shared buffers cached
Mem: 8175320 6159248 2016072 0 310208 5243680
-/+ buffers/cache: 605360 7569960
Swap: 6881272 16196 6865076
- buffer 与 cached 的区别:buffer是解决磁盘与内存速率不匹配问题的,cached是解决CPU与内存速率不匹配问题的。他们都是内存中的一块区域。
- free 与 available :available是应用程序看到的可用内存,free是真实的可用内存,是内核看到的。available = free + buffer +cached。应用程序内存不够用时内核会将buffer和cached腾出来给应用程序。
7、pstack (跟踪进程栈)
pstack pid
8、sort(排序)
-
sort 命令将以默认的方式将文本文件的第一列以ASCII 码的次序排列,并将结果输出到标准输出。
-
-n 按数字进行排序 VS -d 按字典序进行排序
-r 逆序排序
-k N 指定按第N列排序 -
使用 uniq可以消除重复行
sort unsort.txt | uniq // 消除重复行
sort unsort.txt | uniq -c // 统计各行出现的次数
sort unsort.txt | uniq -d // 找出重复行
9、xargs
- 以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据
- 有些命令不支持管道,需要xargs 如下
find /sbin -perm +700 |ls -l #这个命令是错误的
find /sbin -perm +700 |xargs ls -l #这样才是正确的
- -n 3 :每行3个参数输出
- -d X:分隔符为X,默认分割符换行,空格
- -I {} :将前面的输出每一个作为参数传递给后面的指令
- -0:以 \0作为分割符 (等同于 -d \0)
10、文本处理(tr, grep,sed,awk)
二、系统状态监测
1、sar——System Activity Reporter(系统活动情况报告)
参数太多了。。。
sar -u 2 5 # cpu状态,每2秒输出一次,共输出五次
sar -q # 查看cpu负载,输出任务队列,进程数,1,5,15的平均负载
sar -r # 查看内存
sar -W # 查看交换空间
sar -B # 内存分页监控
sar -b # I/O 和传输速率监控
2、netstat(查看网络状态)
- -a:显示所有连线中的Socket
- -u:udp
- -t:tcp
- -p:显示用于连接的程序识别码和程序名称
- -n:显示ip连接的 ip 地址而非域名
-
netstat -apn # 常用
3、vmstat(监视内存使用情况)
4、iostat(监视设cpu负载,磁盘读写)
- cpu
- 磁盘
三、基本命令
1、find(用于查找文件)(locate)
- locate 建立索引,去查所以,非实时查找
find path -option [-print] [-exec/-ok command] {} \;
path:在第一个-option之前的为path,path为空则默认当前目录
[-print]:默认的expression,默认输出,-delete 删除
[-print0]: 以-0作为文件分割符,默认为\n,这样输出全在一行
-exec command:对找出来的文件执行commend命令
-ok 好像是在commed是 rm时,删除前有提示
注意:在{} 与 \ 之间有空格。{}在执行时会被替换成前面查到的文件名
option选项:
- ctime / atime / mtime n:n天内被读取过的文件
- perm 664 : 权限为664
- type:f:一般文件 d:目录 l:符号链接(除此外还有e、b、p)
- name: 文件或目录名,参数为正则匹配
// 1、将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
find . -name "*.c"
// 2、将目前目录其其下子目录中所有一般文件列出
find . -type f
// 3、将当前目录及其子目录下所有最近 20 天内更新过的文件列出:
find . -ctime -20
// 4、查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:
find /var/log -type f -mtime +7 -ok rm {} \;
// 5、查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
find . -type f -perm 644 -exec ls -l {} \;
// 6、查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:
find / -type f -size 0 -exec ls -l {} \;
// 7、查找txt和pdf文件
find . \( -name "*.txt" -o -name "*.pdf" \) -print
// 8、否定参数 ,查找所有非txt文本:
find . ! -name "*.txt" -print
2、cat、head、tail、more(用于查看文件)
# 显示时同时显示行号:
cat -n filename
# 按页显示列表内容:
ls -al | more
# 显示文件前5行:
head -5 filename
# 显示文件倒数前五行:
tail -5 filename
tail -10f filename # 实时显示文件的后10行内容,f即follow
# 查看两个文件间的差别:
diff file1 file2
nl filename // 带有行号的输出文件内容
3、file(显示文件信息:类型,编码等)
4、touch(更新文件时间或者建立新文件)
- 文件时间atime:(access time),mtime:(modification time);ctime:(state time)
- touch [-a | m | c] filename 没有就新建
5、chmod(改权限)
- u:拥有者; g:组; o:其他; a:全部
- +/- r/w/x;
6、df,du(磁盘状态查看)
- df: Disk Free
- du: Disk Used
- df会统计元数据(Meta Data),另外在文件删除但是仍有程序打开文件的时候du不会统计,df会。所以有时候 df > du.
df -h # h:human,使用易读的方式显示M、G等
# 磁盘使用情况
du -sh # -s :递归统计当前目录下文件的大小
7、|| 和 &&
&&:前面成功,则执行后面一条,否则,不执行
||:前面失败,则后一条执行
下面两个执行效果相同
ls /proc && echo suss! || echo fail
if ls /proc; then echo suss; else echo fail; fi
8、wc(统计行和字符)
$wc -l file // 统计行数
$wc -w file // 统计单词数
$wc -c file // 统计字符数
9、ps、pstree
ps au 列出当前用户的进程
ps aux 所有
- a:所有
- f:进程依赖关系(包含每个进程的父进程)
- x:详细信息
pstree pid/user 列出pid / user相关的进程树,默认从init进程为根打印
kill -9 pid # 强制退出
kill -15 pid # 正常退出(默认选项)
10、tar(压缩打包)
tar -czvf test.tar.gz a.c # 将a.c压缩为test.tar.gz
tar -xzvf test.tar.gz # 解压
四、Vim
- 三种模式
- 一般命令模式下:
- 0或者功能键【home】:移动光标到本行最前面
- $或者功能键【End】:移动光标到本行末尾
- /word:查找word,搭配(n/N)查找上一个或下一个
- “:n1,n2s/word1/word2/g” :在n1行n2行之间查找(常用::1,$s/word1/word2/g:第一行到最后一行)
- 剪切:dd; 复制:yy; x/X删除; p/P:粘贴
- 多行:nyy,ndd, 例如 20yy = 复制光标所在向下的20行
- u:恢复,【ctrl】+r:重做
- .:小数点重复上一条指令
五、基础知识
1、连接
详见:图示软硬链接的区别
硬链接 | 软连接 |
---|---|
与源文件地位相同 | 新建一个文件 |
普通文件 | 文件类型“l”,连接文件 |
删除后只要硬链接文件数不为零就能找到源文件 | 删除源文件显示找不到文件 |
ln -s log2013.log link2013 # 建立软连接 -s 参数
ln log2013.log ln2013 # 建立硬链接
2、杀死僵尸进程的方法
- 杀死其父进程
3、文件的三个时间
- atime:access time
- ctime:change time (文件状态改变,文件属性,权限,iNode号等)
- mtime:modification time
4、环境变量(PATH)
PATH = $PATH:<PATH1>:<PATH2>
export PATH
- 冒号分割
- export命令
- 上面是临时更改PATH,永久更改可以修改 \etc\profile
5、export
- 变量使用export $value 后value值可以在当前bash的子shell中使用
6、shell脚本的调试方法
-
方法一:通过 echo 输出变量的值(注,变量引用使用 $ 符号)
-
方法二:通过选项
- 选项:
-n 读一遍脚本但不执行,用于检查语法错误
-v 一边执行脚本,一边将命令打印输出
-x 一边执行一边将命令和结果都打印输出 - 使用参数有下面 三种方式
1、命令行提供参数: bash -[n/x] scrip.sh 2、或者在脚本第一行:#!/bin/sh -x 3、或者在脚本中使用 set -x (启用) set +x (禁用) ```
- 选项:
-
方法三:通过trap调试
trap ‘command’ signal
signal:EXIT,ERR,DEBUG -
方式四:使用调试工具bashdb
bashdb --debug scriptname
- 1、列出代码和查询代码类:
- l 列出当前行以下的10行
- - 列出正在执行的代码行的前面10行
- . 回到正在执行的代码行
- w 列出正在执行的代码行前后的代码
- /pat/ 向后搜索pat
- ?pat?向前搜索pat
- 2、Debug控制类:
- h 帮助
- help 命令 得到命令的具体信息
- q 退出bashdb
- x 算数表达式 计算算数表达式的值,并显示出来
- !! 空格Shell命令 参数 执行shell命令
使用bashdb进行debug的常用命令(cont.)
- 3、控制脚本执行类:
- n 执行下一条语句,遇到函数,不进入函数里面执行,将函数当作黑盒
- s n 单步执行n次,遇到函数进入函数里面
- b n 在行号n处设置断点
- del n 撤销行号n处的断点
- c n 一直执行到行号n处
- R 重新启动当前调试脚本
- Finish 执行到程序最后
- cond n expr 条件断点