Java开发中常用的Linux命令

systemcl

CentOS 7中用来管理系统服务。

systemctl restart network.service

重启网络服务

systemctl status network.service

查看网络服务状态

systemctl enable/disable [serviceName]

服务的开机启动/禁止

systemctl start/stop/restart/status firewalld.service

防火墙的开/关/重起/查看状态

grep

文本查找命令

  • 参数:
    -I:忽略大小写
    -c:打印匹配的行数
    -l:从多个文件中查找包含匹配项
    -v:查找不包含匹配项的行
    -n:打印包含匹配项的行和行标

  • 正则表达式
    \ 忽略正则表达式中特殊字符的原有含义
    ^ 匹配正则表达式的开始行
    $ 匹配正则表达式的结束行
    < 从匹配正则表达式的行开始
    > 到匹配正则表达式的行结束
    [ ] 单个字符;如[A] 即A符合要求
    [ - ] 范围 ;如[A-Z]即A,B,C一直到Z都符合要求
    . 所有的单个字符
    *所有字符,长度可以为0

find

通过文件名查找文件的所在位置,支持模糊查询
当前目录及子目录下查询fileName:
find . -name [fileName]

uptime

查看机器的启动时间、登陆用户、平均负载等情况,可以用来确定操作系统的重启时间


  • 当前时间:08:54:45
  • 系统已运行时间:123天,18小时,33分钟
  • 当前在线用户:1个
  • 系统平均负载:0.00,0.01,0.05(最近1分钟、5分钟、15分钟的系统负载情况)

一般来说,每个CPU内核对应的活动进程数不大于3时,系统运行良好,也就是说活动进程数小于CPU核心数的3倍。
例如,如果服务器的CPU有3个核心,那么只要uptime最后输出的一串数值小于9,就表示系统负载正常。但是,如果系统负载超过10,就表明当前系统的负载过重。

lsof

列出系统当前打开的文件句柄,在Linux文件系统中,任何资源都是以文件句柄的形式进行管理的,例如:硬件设备、文件、网络套接字等。

  • 通过pid查询某个进程的句柄情况:lsof -p [pid]
  • 通过端口查询:lsof -i:[port]

ulimit

当前各种系统对用户使用资源的限制:
ulimit -a


设置用户的最大进程数:
ulimit -u [number]
设置用户可以打开的最大文件句柄数:
ulimit -n [number]

curl

curl是利用URL语法命令行方式下工作的开源文件传输工具。可以很方便的测试RESTful风格的API。

  • 获取详细信息:curl -v [url]
  • 获取请求响应头信息:curl -i [url]
  • 以POST形式访问:curl -d [string] [url]
  • POST JSON数据:curl -d '{ "name": "Darth" }' [url]
  • 通过包含JSON数据的文件POST:curl -d @jsonFileName [url]
  • 只获取返回的HTTP头:curl -I [url]
  • 获取HTTP响应码:curl -sw '%{http_code}' [url]

scp

实现本地到远程,远程到本地的文件传输命令
scp root@192.168.1.1:/usr/lez/my.log .
scp ./my.log root@192.168.1.1:/log/

vi

命令行文本编辑工具
常用的命令:

  • i:在当前位置前插入
  • I:在当前行首插入
  • a:在当前位置后插入
  • A:在当前行尾插入
  • o:在当前行之后插入一行
  • O:在当前行之前插入一行
  • :wq:保存并退出
  • :q!:不保存并强制退出
  • set number:显示行号
  • shift+g:移动到最后一行
  • n+shift+g:移动到第n行
  • 0:移动到行首
  • $:移动到行尾
  • /text:查找text,按n键查找下一个,按N键查找前一个
  • ?text:查找text,反向查找,按n键查找下一个,按N键查找前一个
  • %s/old/new/g:将old替换成new,替换当前行的所有匹配
  • ctrl+f:向下滚动一屏
  • ctrl+b:向上滚动一屏
  • u:撤销
  • U:撤销对整个行的操作
  • Ctrl+r:重做
  • x:删除当前字符
  • dd:删除当前行
  • yy:复制当前行
  • p:在当前光标后粘贴

dos2unix和unix2dos

用于转换Windows和UNIX的换行符,通常在Windows下开发的脚本和配置,上传到UNIX系统下都需要转换。
Centos7上安装:yum install dos2unix -y
使用:dos2unix [fileName]

awk

Linux系统下的文本分析工具。awk逐行读入文件,以空格为默认分割符将每行切片,也可以以任何字符为分隔符,把切开的部分进行各种分析和处理,在分析和处理的过程中支持脚本式的编程。
测试文件:

test.log

awk -F ' ' ' {print $4}' test.log | sort | uniq -c | sort -nr
命令结果

ps

查看系统内所有的进程
ps -elf

  • -e:显示所有的进程
  • -l:长各式显示(有F,wchan等字段)
  • -f:全部列出
    命令结果

    字段说明:
  • F:程序的旗标(flag),4代表使用者为superuser
  • S:代表这个程序的状态(STAT),D不可中断,R运行,S中断,T停止,Z僵死
  • PPID:该进程的父进程的ID
  • C:CPU使用的资源百分比
  • PRI:进程优先级编号(Priority)
  • NI:优先级(Nice)
  • ADDR:指出该程序在内存的哪个部分
  • SZ:占用的内存大小
  • WCHAN:进程正在睡眠的内核函数名称
  • TIME:使用掉的CPU时间
  • CMD:所下达的指令

top

top命令用于查看活动进程的CPU和内存信息,能够实时显示系统中各个进程的资源占用情况,可以按照CPU、内存的使用情况和执行时间对进程进行排序。

  • t:切换显示进程和CPU状态信息
  • m:切换显示内存信息
  • r:重新设置一个进程的优先级
  • k:通过输入的PID终止一个进程
  • s:改变刷新的时间间隔
  • u:查看指定用户的进程

top的升级版htop的安装:
# rpm -ivh http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL //导入key
# yum install htop

pidstat

监控全部或指定的进程占用系统资源的情况,包括CPU、内存、磁盘I/O、线程切换、线程数等数据。

  • 输出CPU的使用信息:pidstat -u -p [pid]
  • 输出内存的使用信息:pidstat -r -p [pid]
  • 输出磁盘I/O的使用信息:pidstat -d -p [pid]

free

用于显示系统内存的使用情况,包括总体内存、已经使用的内存;还可用于显示系统内核使用的缓冲区,包括缓冲(buffer)和缓存(cache)等。

pmap

用于报告进程中各个模块占用内存的具体情况,显示比较底层的进程模块占用内存的信息,并且可以打印内存的起止地址等,用于定位深层次JVM或操作系统的内存问题。
pmap -d [pid]

vmstat

显示关于内核线程、虚拟内存、磁盘I/O、陷阱和CPU占用率的统计信息。


vmstat
  • buff是I/O系统存储的磁盘块文件的元数据的统计信息。
  • cache是操作系统用来缓存磁盘数据的缓冲区,操作系统会自动调节这个参数,在内存紧张时操作系统会减少cache的占用空间来保证其他进程可用。
  • cs参数表示线程环境的切换次数,此数据太大时表明线程的同步机制有问题。
  • si和so较大时,说明系统频繁使用交换区,应该查看操作系统的内存是否够用。
  • bi和bo代表I/O活动,根据其大小可用知道磁盘I/O的负载情况。

mpstat

用于实时监控系统CPU的一些统计信息,这些信息存放在/proc/stat文件中,在多核CPU系统里,不但能查看所有CPU的平均使用信息,还能查看某个特定CPU的信息。
mpstat -P ALL

iostat

用于监控CPU占用率、平均负载值及I/O读写速度。
iostat -x

  • r/s:每秒发送到设备的读入请求数
  • w/s:每秒发送到设备的写入请求数
  • rkB/s:每秒从设备读入的数据量,单位为K
  • wkB/s:每秒向设备写入的数据量,单位为K
  • await:I/O请求平均执行时间,包括发送请求和执行时间,单位是毫秒

swapon

查看交换分区的使用情况。
/sbin/swapon -s

df

用于查看文件系统的硬盘挂载点和空间使用情况。
df -h

nc

NetCat,在网络工具中有“瑞士军刀”美誉,其有Windows和Linux的版本。因为它短小精悍(1.84版本也不过25k,旧版本或缩减版甚至更小)、功能实用,被设计为一个简单、可靠的网络工具,可通过TCP或UDP协议传输读写数据。同时,它还是一个网络应用Debug分析器,因为它可以根据需要创建各种不同类型的网络连接。
详见:Linux nc命令详解

mtr

mtr命令是Linux中的网络连通性测试工具,也可以用来检测丢包率。
mtr -r [url]

nslookup

这是一款检测网络中DNS服务器能否正确解析域名的工具命令,并且可以输出。
nslookup [域名]

traceroute

提供从用户的主机到互联网另一端的主机的路径。
traceroute [主机域名]

sar

多功能的监控工具,不需要管理员权限,可以输出每秒的网卡存取速度,在应急过程中可以用来判断服务器是否上量。
sar -n DEV 1 1

netstat

显示网络连接、端口信息等。

  • 根据进程ID查找进程开启的端口:netstat -nap | grep [pid]
  • 查找使用端口的进程ID:netstat -nap | grep [port]
  • 查看端口占用情况:netstat -tln | grep [port]

tcpdump

网络状况分析和跟踪工具,是可以用来抓包的实用命令。

  • 显示来源IP或者目的IP为192.168.1.11的网络通信:sudo tcpdump -i eth0 host 192.168.1.11
  • 显示去往192.168.1.12的所有FTP会话信息:sudo tcpdump -i eth1 'dst 192.168.1.12 and (port 21 or 20)'
  • 显示去往192.168.1.12的所有HTTP会话信息:
    sudo tcpdump -ni eth0 'dst 192.168.1.12 and tcp and port 8080'

nmap

扫描某一主机打开的端口及端口提供的服务信息。通常用于查看本机有哪些端口对外提供服务,或者确定服务器有哪些端口对外开放。
nmap -v -A localhost

  • -v:输出更详细的信息
  • -A:探测目标操作系统类型和版本

pstack

显示每个进程的本地调用栈。可以使用该命令查看进程正在挂起的执行方法,也可以查看进程的本地线程堆栈,与JVM的jstack配合使用可以看到JVM线程运行的全部状况。
pstack [pid]

/proc文件系统

  • 显示CPU信息:cat /proc/cpuinfo
  • 显示内存信息:cat /proc/meminfo
  • 显示详细的内存映射信息:cat /proc/zoneinfo
  • 显示磁盘映射信息:cat /proc/mounts
  • 显示系统的平均负载:cat /proc/loadavg

md5sum

该命令用于生成md5摘要,通常用于在文件上传和下载操作中校验内存的正确性,或者通过hmac做对称数据签名。
md5sum [fileName]

sha256

md5摘要算法可以通过碰撞的方法被破解,sha256算法更安全。sha256通常也用于文件上传和下载操作中校验正确性,或者通过校验的sha256-hmac做对称数据签名。
sha256sum [fileName]

base64

网络上最常见的用于传输8位字节码的编码方式之一,这种编码方式可以保证输出的编码位全都是可读字符。base64制订了一个编码表,以便进行统一转换。编码表共有64个字符,因此被称为base64编码。
base64 [fileName]

参考资料:

《分布式服务架构:原理、设计与实践》
curl gitbook
每天一个linux命令(41):ps命令
Centos7安装htop下取代top的进程管理工具
iostat命令详解

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • 1.查找文件 find / -name filename.txt 根据名称查找/目录下的filename.txt...
    Ludwigvan阅读 906评论 1 3
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,016评论 2 34
  • 大家都知道,Linux系统提供了非常多非常多的命令或工具,这些命令都各有所长,都是系统需要的。但我们精力有限,要掌...
    刘振锋阅读 11,430评论 10 90
  • 如果你想知道你的服务器正在做干什么,你就需要了解一些基本的命令,一旦你精通了这些命令,那你就是一个专业的 Linu...
    七寸知架构阅读 10,672评论 1 71
  • 下了一天的雨 好想多年前的你 我曾爱过你悄无声息 我在远处静静看你 鸟儿从我头上掠过 你留下惊鸿一面 路过了很多爱...
    六7阅读 250评论 1 2