linux常用命令

常用Linux系统操作命令

端口查询类

  • 查看端口使用情况(包括监听和未监听的)

    1
    $ netstat -a/at/au

    at 为tcp端口,au 为udp端口

  • 查看处于监听状态的端口

    1
    $ netstat -l/lt/lu/lx

    lt 为tcp端口,lu为udp端口,lx 为unix端口

  • 查看指定端口使用情况

    1
    $ netstat -apn | grep 2333

    查看 2333端口占用

  • 查看占用指定端口的进程

    1
    $ sudo lsof -i :2333

    查看 2333端口被哪个进程(pid)占用

权限设置(chmod)

  • 修改文件权限

    1
    $ chmod a+x somefile

    使用 -R 可以对该文件夹下所有文件权更改

查看网络连接

  • 列出所有打开的网络连接

    1
    $ lsof -i
  • 列出所有的tcp(udp)连接

    1
    $ lsof -i tcp(udp)
  • 列出指定tcp端口情况

    1
    $ lsof -i tcp:80

进程操作

  • 根据名称查询进程

    1
    $ ps -ef | grep java

    使用标准格式输出

    1
    $ ps aux | grep java

    使用BSD格式输出

  • 杀掉进程

    1
    $ kill -9 pid

    pid为相应进程号

文件上传下载(scp)

  • 上传至服务器

    1
    $ scp filename (文件夹使用 -r) 用户@ip:pwd
  • 下载至本地

    1
    $ scp 用户@ip:pwd pwd

查看资源使用情况

  • 查看CPU使用率、内存、虚拟内存交换情况、IO读写情况

    1
    $ vmstat 5
  • 查看系统中各个进程的资源占用状况

    1
    $ top

    使用top命令后,按Shift+M, 显示结果将按照进程内存占用率排序

  • 查看内存使用情况

    1
    $ free -m

    以 MB 为单位

  • 查看磁盘空间使用情况

    1
    $ df -h

日志查询类

  • 按关键字不分页查询

    1
    $ grep "applyId" app.log

    applyId 为要查询的关键字,app.log 为日志名

  • 按关键字从前往后分页查询

    1
    $ cat -n app.log | grep "applyId" | more

    以上命令会分页输出,使用空格键翻页,使用回车键显示更多

  • 按关键字只显示最后M行查询

    1
    $ tail -n M app.log | grep "applyId"

    M为行数

  • 按关键字动态显示最新M行查询

    1
    $ tail -f M app.log | grep "applyId"

    M为行数

  • 日志太多,将相关日志输出到文件后查看

    1
    $ cat -n app.log | grep "applyId" >app-new.log

    app-new.log为输出的文件名

  • 按日期范围查询

    1
    $ sed -n '/2017-10-17 10:10:10/,/2017-10-17 10:15:00/p' app.log

    2017-10-17 10:10:10 和 2017-10-17 10:15:00必须是日志中真实打印输出过的