Linux常用命令小结

时间:2021-08-04 08:01:58

1. 磁盘使用情况

du -h  查看当前用户每个文件的大小,格式化显示

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

:s/p1/p2/ 替换当前行第一个 p1 为 p2
:s/p1/p2/g 替换当前行所有 p1 为 p2
:n,$s/p1/p2/ 替换第 n 行开始到最后一行中每一行的第一个 p1 为 p2
:n,$s/p1/p2/g 替换第 n 行开始到最后一行中每一行所有 p1 为 p2
(n 为数字,若 n 为 .,表示从当前行开始到最后一行)
:%s/p1/p2/(等同于 :g/p1/s//p2/) 替换每一行的第一个 p1 为 p2
:%s/p1/p2/g(等同于 :g/p1/s//p2/g) 替换每一行中所有 p1 为 p2

dd 删除一行

x 删除一个字符

3. 查看机器负载情况

 top    按c键可以查看进程的描述信息

4. 查看机器信息

uname  查看系统情况

ifconfig 查看网络IP

5. 基本命令

pwd 当前路径地址

whereis 命令  命令所在的路径

cd 目录切换 如cd .. 切换到上层目录

rm  删除文件或目录  -i 交互式参数,需用户确认

                                  –r 目录名:这个操作可以连同这个目录下面的子目录都删除

                                  -f 文件/目录:这个操作可以进行强制删除

rmdir 删除目录   - p 递归删除目录

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

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 package -Dmaven.test.skip=true

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连接状态

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
状态:描述
  CLOSED:无连接是活动的或正在进行
  LISTEN:服务器在等待进入呼叫
  SYN_RECV:一个连接请求已经到达,等待确认
  SYN_SENT:应用已经开始,打开一个连接
  ESTABLISHED:正常数据传输状态
  FIN_WAIT1:应用说它已经完成
  FIN_WAIT2:另一边已同意释放
  CLOSE_WAIT:等待所有分组死掉
  CLOSING:两边同时尝试关闭
  TIME_WAIT:另一边已初始化一个释放
  LAST_ACK:等待所有分组死掉
awk,晚上找到一个简单的例子
一个文档test.txt内容格式如下:
a 6
b 8
a 9
左列是单词,右列是单词对应出现的次数,单词可能重复出现。
怎么用shell脚本统计出单词出现的次数和?比如统计出:
a 15
b  8
awk '{a[$1] += $3;} END {for(i in a) print i,a[i]}' test.txt
假如需要以冒号:等分隔结果可以如下
awk '{a[$1] += $3;} END {for(i in a) print i,a[i]}' test.txt | awk { OFS=":"; print $1,$2}
再假如只输出:分隔的第二个字段
awk '{a[$1] += $3;} END {for(i in a) print i,a[i]}' test.txt | awk { OFS=":"; print $1,$2} | awk -F :  {print $2}
17. 网络
ifconfig  查看IP信息 (有可能在/sbin/ifconfig)
netstat -lntp 查看所有开放的端口
netstat -an | grep 8886 查看所有8886端口的连接
route -n 查看本机路由情况