1. 磁盘使用情况
du -h 查看当前用户每个文件的大小,格式化显示
du -h --max-depth=1 当前各个目录下的总大小
du -sh 查看总的大小
df -h 磁盘使用情况
iostat -xm 3 磁盘的读写情况
2. VI常用命令
esc切换文件读写状态,I键插入,O键追加
:q! 强制退出
:wq 保存后退出
:x 保存后退出
G 到文件尾部
1G到文件首 或者 gg
0行首
$行尾
ctrl + f 向文件尾翻一页
ctrl + b向文件首翻一页
/patten 从光标开始处,向文件尾搜索patten
?patten 从光标处开始,向文件末搜索patten
: s /p1 /p2 /g 将当前行中所有p1全部替换为P2
:n1,n2 s /p1 /p2 /g 将第n1到n2行中所有的p1全部替换为p2
:g /p1 /s // p2 /g 将文件中的所有p1替换为p2
dd 删除一行
x 删除一个字符
3. 查看机器负载情况
top 按c键可以查看进程的描述信息
4. 查看机器信息
uname 查看系统情况
ifconfig 查看网络IP
查看外部IP: curl ifconfig.me
5. 基本命令
pwd 当前路径地址
whereis 命令 命令所在的路径
cd 目录切换 如cd .. 切换到上层目录
rm 删除文件或目录 -i 交互式参数,需用户确认
–r 目录名:这个操作可以连同这个目录下面的子目录都删除
-f 文件/目录:这个操作可以进行强制删除
rmdir 删除目录 - p 递归删除目录
cut命令
例如 49-20130106-151719-1357293025547
获取前面的49字符串,可以使用 cut -d "-" -f 1
cp 文件目录复制
cp -r dir1 dir2 复制整个目录: 若目录dir2存在,则将目录dir1,及其所有文档和子目录,复制到目录dir2下,新目录名称
为dir1. 若目录dir2不存在,则将dir1,及其所有文档和子目录,复制为目录dir2.
mkdir mydir 创建目录mydir
mv conf conf_bak 使用mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中
chmod u+x test.sh 改变文件的访问权限,这里是给脚本增加执行权限
echo test >> $(date -d "today" +"%Y%m%d_%H%M%S").txt
sed -i "s/ServiceIP=/#ServiceIP=/g" `grep "ServiceIP=" -rl resource/config.ini`
-z “str” :判断字符串为空
-n "str":判断字符串不为空
ln -s /mnt/disk/0/keyword_data/ /home/recsys/wlb/keywordinterest/data
6. 查找命令
grep "需要查找的文字" 查找的文件 如:grep "hello,world" info.log
find pathname -options [-print -exec -ok ...]
7.打包
tar -cvf etc.tar /etc 仅打包,不压缩!
tar -zcvf etc.tar.gz /etc 打包后,以 gzip 压缩
tar -xvf tec.tar.gz 解包并解压缩
8. scp and ssh
ssh -A -p56789 usrname@120.200.122.123
scp -P56789 ./test.tar.gz usrname@120.200.122.123:/home/myfolder/
SCP -r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。
-p Preserves modification times, access times, and modes from the original file.
9 maven使用
mvn clean 清理target
mvn compile 编译项目
mvn package -Dmaven.test.skip=true 或者mvn -Dtest.skip package 打包跳过单元测试
mvn install -Dmaven.test.skip=true 安装跳过单元测试
mvn deploy 部署上传到服务器上去
mvn dependency:copy-dependencies 拷贝依赖文件到文件夹
mvn eclipse:eclipse //生成eclipse工程
10进程相关
ps -f -udir | grep "cron" 搜索dir用户下所有包含cron字符的所有进程
killall -9 "rsync" 杀死所有包含rsync字符的所有进程
kill -9 1099 杀死进程编号为1099的进程
ps -ef|grep sv_monitor|grep -v grep|cut -c 9-15|xargs kill -9 杀死包含sv_monitor的进程
11 ls
ls -t1 info.log.* | head -n1 找出最后修改的哪一个log文件
ls -l | wc -l 统计文件个数
-t sort by last modification time
-1 list one file per line
head: -n N print the first N lines
12. md5sum
man md5sum | col -b > md5sum.txt
md5sum md5sum.txt
md5sum md5sum.txt > hashfile
md5sum –c hashfile # 验证hashfile中包含的md5值和对应的文件,在执行该命令时是否仍然匹配, 如果此时test.c被修改了,该命令将返回不匹配的警告.
13. 查看linux版本
lsb_release -a
uname -a
14. lsof 列出当前系统打开文件的工具
每行显示一个打开的文件,若不指定条件默认将显示所有进程打开的所有文件。lsof输出各列信息的意义如下:
COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称
lsof filename 显示打开指定文件的所有进程
lsof -a 表示两个参数都必须满足时才显示结果
lsof -c string 显示COMMAND列中包含指定字符的进程所有打开的文件
lsof -u username 显示所属user进程打开的文件
lsof -g gid 显示归属gid的进程情况
lsof +d /DIR/ 显示目录下被进程打开的文件
lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长
lsof -d FD 显示指定文件描述符的进程
lsof -n 不将IP转换为hostname,缺省是不加上-n参数
lsof -i 用以显示符合条件的进程情况
15 crontab
基本格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
*/5 * * * * /home/dir/test/bin/test.sh > /dev/null 每五分钟执行一次脚本
45 23 * * * /home/dir/test/bin/test.sh > /dev/null 每天的23点45分执行一次脚本
16. 查看并发请求数及其TCP连接状态
ip a : 可以查看本机上绑定的所有IP
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
CLOSE_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉
Recv-Q:表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走,recv()
Send-Q:对方没有收到的数据或者说没有Ack的,还是本地缓冲区.
$0 :当前处理行记录
$1: 第一个分段
NF:每一行拥有的字段总数
NR:当前awk处理的第几行数据
FS:目前的分割字符,默认是空格。
ifconfig | grep "inet addr"|sed 's/^.*inet addr://g'
bin=`dirname "$0"`
bin=`cd "$bin"; pwd`
addtap.bat运行下