Java开发常用的Linux命令
系统信息
1. uname
用于查看系统信息
1 | uname -a 显示全部信息 |
2. lscpu
cpu 架构信息
文件和目录操作
1. ls
列出文件或者目录的信息,目录的信息就是其中包含的文件。
1 | ## ls [-aAdfFhilnrRSt] file|dir |
2. cd
更换当前目录。
1 | cd [相对路径或绝对路径] |
3. mkdir
创建目录。
1 | ## mkdir [-mp] 目录名称 |
4. rmdir
删除目录,目录必须为空。
1 | rmdir [-p] 目录名称 |
5. touch
更新文件时间或者建立新文件。
1 | ## touch [-acdmt] filename |
6. cp
复制文件。如果源文件有两个以上,则目的文件一定要是目录才行。
1 | cp [-adfilprsu] source destination |
7. rm
删除文件。
1 | ## rm [-fir] 文件或目录 |
8. mv
移动文件。
1 | ## mv [-fiu] source destination |
查看文件内容
1. cat
取得文件内容。
1 | ## cat [-AbEnTv] filename |
2. tac
是 cat 的反向操作,从最后一行开始打印。
3. more
和 cat 不同的是它可以一页一页查看文件内容,比较适合大文件的查看。
4. less
和 more 类似,但是多了一个向前翻页的功能。
5. head
取得文件前几行。
1 | ## head [-n number] filename |
6. tail
是 head 的反向操作,只是取得是后几行。
常用:
1 | tail -f xx #实时查看 |
7. od
以字符或者十六进制的形式显示二进制文件。
用户和用户组
用户
查看所有用户列表
1 | cat /etc/passwd #可以查看所有用户的列表 |
添加新的用户账号使用 useradd 命令,删除使用 userdel 命令,修改使用 usermod 命令
1 | useradd 选项 用户名 |
1 | userdel 选项 |
此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录
1 | usermod 选项 用户名 |
此命令将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer
用户组
查看用户组
1 | cat /etc/group #查看用户组 |
增加用户组
1 | groupadd 选项 用户组 |
删除用户组
1 | groupdel 用户组 |
修改用户组
1 | groupmod 选项 用户组 |
切换用户组
1 | newgrp 群组名称 |
权限操作
chmod [who] [+ | - | =] [mode] 文件名
命令中各选项的含义为:
操作对象who可是下述字母中的任一个或者它们的组合:
1 | u 表示“用户(user)”,即文件或目录的所有者。 |
操作符号可以是:
1 | + 添加某个权限。 |
设置mode所表示的权限可用下述字母的任意组合:
1 | r 可读。 |
可以将一组权限用数字来表示,此时一组权限的 3 个位当做二进制数字的位,从左到右每个位的权值为 4、2、1,即每个权限对应的数字权值为 r : 4、w : 2、x : 1。
示例:
ls -l 命令 查看文件显示
1 | drw-rw-rw- 4 root root 4096 Dec 3 06:05 SSR-Bash-Python |
前面的 drw-rw-rw- 之类 ,第一位含义:
普通文件的文件权限第一个字符为“-”
目录文件的文件权限第一个字符为“d”
字符设备文件的文件权限第一个字符为“c”
块设备文件的文件权限第一个字符为“b”
符号链接文件的文件权限第一个字符为“s”
后面九位为三个用户组的权限,每个用户组三位,读、写、执行权限为 rwx ,没哪个则哪个为 - ,如 r-- 为只读,没有写和执行权限。
添加权限方式
1、 chmod a+w filename 为所有用户给filename文件增加写(w)权限
2、chmod 777 filename 所用用户拥有filename的所有权限
搜索
1. which
指令搜索。
1 | ## which [-a] command |
2. whereis
文件搜索。速度比较快,因为它只搜索几个特定的目录。
1 | ## whereis [-bmsu] dirname/filename |
3. locate
文件搜索。可以用关键字或者正则表达式进行搜索。
压缩和打包
压缩文件名
Linux 底下有很多压缩文件名,常见的如下:
扩展名 | 压缩程序 |
---|---|
*.Z | compress |
*.zip | zip |
*.gz | gzip |
*.bz2 | bzip2 |
*.xz | xz |
*.tar | tar 程序打包的数据,没有经过压缩 |
*.tar.gz | tar 程序打包的文件,经过 gzip 的压缩 |
*.tar.bz2 | tar 程序打包的文件,经过 bzip2 的压缩 |
*.tar.xz | tar 程序打包的文件,经过 xz 的压缩 |
压缩指令
1. gzip
gzip 是 Linux 使用最广的压缩指令,可以解开 compress、zip 与 gzip 所压缩的文件。
经过 gzip 压缩过,源文件就不存在了。
有 9 个不同的压缩等级可以使用。
可以使用 zcat、zmore、zless 来读取压缩文件的内容。
1 | $ gzip [-cdtv#] filename |
2. bzip2
提供比 gzip 更高的压缩比。
查看命令:bzcat、bzmore、bzless、bzgrep。
1 | $ bzip2 [-cdkzv#] filename |
3. xz
提供比 bzip2 更佳的压缩比。
可以看到,gzip、bzip2、xz 的压缩比不断优化。不过要注意的是,压缩比越高,压缩的时间也越长。
查看命令:xzcat、xzmore、xzless、xzgrep。
1 | $ xz [-dtlkc#] filename |
打包
压缩指令只能对一个文件进行压缩,而打包能够将多个文件打包成一个大文件。tar 不仅可以用于打包,也可以使用 gzip、bzip2、xz 将打包文件进行压缩。
1 | $ tar [-z|-j|-J] [cv] [-f 新建的 tar 文件] filename... ==打包压缩 |
使用方式 | 命令 |
---|---|
打包压缩 | tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称 |
查看 | tar -jtv -f filename.tar.bz2 |
解压缩 | tar -jxv -f filename.tar.bz2 -C 要解压缩的目录 |
网络
iptables
永久开启/关闭 iptables
1 | 开启: chkconfig iptables on |
重启后失效
1 | 开启: service iptables start |
查看、添加和删除
1 | iptables -nL --line-number #查看当前规则 |
firewalld
1 | service firewalld status; #查看防火墙状态 |
ss
ss是Socket Statistics的缩写。ss命令用来显示处于活动状态的套接字信息。它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。
1 | ss [参数] |
1 | ss -t -a #显示TCP套接字 |
vi/vim 基本操作
vi与vim两者区别
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。
vim的这些优势主要体现在以下几个方面:
1.多级撤消
我们知道在vi里,按 u只能撤消上次命令,而在vim里可以无限制的撤消。
2.易用性
vi只能运行于unix中,而vim不仅可以运行于unix,windows ,mac等多操作平台。
3.语法加亮
vim可以用不同的颜色来加亮你的代码。
4.可视化操作
就是说vim不仅可以在终端运行,也可以运行于x window、 mac os、 windows。
5.对vi的完全兼容
某些情况下,你可以把vim当成vi来使用
使用 vi 文件名 或者 vim 文件名 打开文件
按i进入编辑
按esc退出编辑
打开状态操作:
1 | u 撤销上一步操作 |
按esc回到打开状态
其他操作
1 | gg 回到顶端 |
vi操作异常中断
提示Found a swap file by the name
删除目录下的隐藏文件,恢复操作;
ls -a 查看swap隐藏文件,rm 命令删除即可。
进程管理
1.ps
1 | ps -l # 查看自己的进程 |
2.top
第一行,任务队列信息,同 uptime 命令的执行结果
系统时间:23:46:16
运行时间:up 179 days, 11:16,
当前登录用户: 1 users
负载均衡(uptime) load average: 0.00, 0.02, 0.05
average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了
第二行,Tasks — 任务(进程)
总进程:96 total, 运行:1 running, 休眠:95 sleeping, 停止: 0 stopped, 僵尸进程: 0 zombie
第三行,cpu状态信息
0.3%us【user space】— 用户空间占用CPU的百分比
0.5%sy【sysctl】— 内核空间占用CPU的百分比
0.0%ni【】— 改变过优先级的进程占用CPU的百分比
99.2%id【idolt】— 空闲CPU百分比
0.0%wa【wait】— IO等待占用CPU的百分比
0.0%hi【Hardware IRQ】— 硬中断占用CPU的百分比
0.0%si【Software Interrupts】— 软中断占用CPU的百分比
第四行,内存状态
8009128 total, 832280 free, 1235088 used, 5941760 buff/cache【buffers缓存的内存量】
第五行,swap交换分区信息
0 total, 0 free, 0 used. 6469384 avail Mem【cached缓冲的交换区总量】
备注:
可用内存=free + buffer + cached对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,第四行中空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
JDK 常用命令
Sun JDK监控和故障处理命令有jps jstat jmap jhat jstack jinfo
- jps,JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程;
- jstat,JVM statistics Monitoring,用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据;
- jmap,JVM Memory Map 命令用于生成heap dump文件;
- jhat,JVM Heap Analysis Tool 命令是与 jmap 搭配使用,用来分析 jmap 生成的 dump 文件,jhat 内置了一个微型的 HTTP/HTML 服务器,生成 dump 的分析结果后,可以在浏览器中查看;
- jstack,用于生成java虚拟机当前时刻的线程快照;
- jinfo,JVM Configuration info 这个命令作用是实时查看和调整虚拟机运行参数。
参考
- [1] Linux基本概念及常用命令实现汇总
- [2] Linux 命令大全
- [3] 鸟哥的 Linux 私房菜