Java程序员必须掌握的常用Linux命令。
Java程序员也是半个运维了,在日常开发中经常会接触到Linux环境操作。小公司的开发人员甚至是兼了全运维的工作,下面整理了一些常用的Linux操作命令。

Linux常用指令

ls          显示文件或目录
     -l       列出文件详细信息l(list)
     -a       列出当前目录下所有文件及目录,包括隐藏的a(all)     
mkdir         创建目录
     -p       创建目录,若无父目录,则创建p(parent)
cd            切换目录
touch         创建空文件
vim / vi      创建/编辑文件
     insert   编辑     
     :q       退出     
     :q!      强制退出     
     :wq      保存并退出     
     esc      退出编辑
echo          创建带有内容的文件
cat           查看文件内容
tar           打包压缩
     -c       建立压缩档案     
     -x       解压缩文件     
     -z       gzip压缩文件     
     -j       bzip2压缩文件     
     -v       显示所有过程     
     -f       使用档名    
cp            拷贝
     -r       递归拷贝目录
mv            移动或重命名
rm            删除文件
     -r       递归删除,可删除子目录及文件
     -f       强制删除     
chmod         变更文件或目录的权限
kill          杀进程
find          在文件系统中搜索某文件
wc            统计文本中行数、字数、字符数
grep          在文本文件中查找某个字符串
rmdir         删除空目录
tree          树形结构显示目录,需要安装tree包
pwd           显示当前目录
ln            创建链接文件
date          显示系统时间
more / less   分页显示文本文件内容
head / tail   显示文件头、尾内容
sudo          用来以其他身份来执行命令,预设的身份为root
su            换当前用户身份到其他用户身份
stat          显示指定文件的详细信息,比ls更详细
who           显示在线登陆用户
whoami        显示当前操作用户
hostname      显示主机名
uname         显示系统信息
top           动态显示当前耗费资源最多进程信息
ps            显示瞬间进程状态     
     -e       显示所有进程     
     -f       全格式
du            查看目录大小
     -s       只显示目录大小的总合     
     -h       带单位显示目录大小
df            查看磁盘大小df     
     -h       带有单位显示磁盘信息     
free          查看内存情况
     -b       单位(bytes)     
     -k       单位(KB)     
     -m       单位(MB)     
     -g       单位(GB)
ifconfig      查看网络情况
ping          测试网络连通
netstat       显示网络状态信息
     -ano     查看某个端口是否被占用     
     -tlnp    根据端口查找PID
man           查看Linux中的指令帮助
clear         清屏
kill          杀进程
reboot        重启系统
shutdown
     -r       关机重启
     -h       关机不重启
     now      立刻关机

1.查找文件 find / -name filename.txt 根据名称查找/目录下的filename.txt文件。

find . -name “*.xml” 递归查找所有的xml文件

find . -name “*.xml” |xargs grep “hello world” 递归查找所有文件内容中包含hello world的xml文件

grep -H ‘spring’ *.xml 查找所以有的包含spring的xml文件

find ./ -size 0 | xargs rm -f & 删除文件大小为零的文件

ls -l | grep ‘.jar’ 查找当前目录中的所有jar文件

grep ‘test’ d* 显示所有以d开头的文件中包含test的行。

grep ‘test’ aa bb cc 显示在aa,bb,cc文件中匹配test的行。

grep ‘[a-z]{5}’ aa 显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

2.查看一个程序是否运行 ps –ef|grep tomcat 查看所有有关tomcat的进程

3.终止线程 kill -9 19979 终止线程号位19979的进程

4.查看文件,包含隐藏文件 ls -al

5.当前工作目录 pwd

6.复制文件 cp source dest 复制文件 cp -r sourceFolder targetFolder 递归复制整个文件夹 scp sourecFile romoteUserName@remoteIp:remoteAddr 远程拷贝

7.创建目录 mkdir newfolder

8.删除目录 rmdir deleteEmptyFolder删除空目录 rm -rf deleteFile 递归删除目录中所有内容

9.移动文件 mv /temp/movefile /targetFolder

10.重命令 mv oldNameFile newNameFile

11.切换用户 su -username

12.修改文件权限 chmod 777 file.java //file.java的权限-rwxrwxrwx,r表示读、w表示写、x表示可执行

13.压缩文件 tar -czf test.tar.gz /test1 /test2

14.列出压缩文件列表 tar -tzf test.tar.gz

15.解压文件 tar -xvzf test.tar.gz

16.查看文件头10行 head -n 10 example.txt

17.查看文件尾10行 tail -n 10 example.txt

18.查看日志类型文件 tail -f exmaple.log//这个命令会自动显示新增内容,屏幕只显示10行内容的(可设置)。

19.使用超级管理员身份执行命令 sudo rm a.txt 使用管理员身份删除文件

20.查看端口占用情况 netstat -tln | grep 8080 查看端口8080的使用情况

21.查看端口属于哪个程序 lsof -i :8080

22.查看进程 ps aux|grep java 查看java进程 ps aux查看所有进程

23.以树状图列出目录的内容 tree a ps:Mac下使用tree命令

24.文件下载 wget http://file.tgz mac下安装wget命令 curl http://file.tgz

25.网络检测 ping www.just-ping

26.远程登录 ssh userName@ip

27.打印信息 echo $JAVA_HOME 打印java home环境变量的值

28.java 常用命令 java javac jps ,jstat ,jmap, jstack

29.其他命令 svn git maven
cmd命令和linux命令的区别
cmd命令和linux命令看起来很相似,都是在一个控制台输入一些特定的指令去完成一些特定的操作。可是用过的朋友就会发现这些指令是有很多不同的,可是到底有什么不同,要说又说不上来,所以要了解一下。

cmd命令的起源:DOS

DOS(Disk Operating System,磁盘操作系统),是Windows系统之前的一个操作系统名称,属于单用户单任务式的,特点通常是黑底白字,用户全靠键盘输入命令来完成所有工作。之后Windows诞生了,属于多用户多任务式的(系统名称都是多窗口),初期当然还得使DOS系统可用,再之后专门开辟个cmd窗口来模仿DOS界面及大多数的命令,也称为命令行,这就是cmd命令行的诞生。

Windows里面运行cmd出来的DOS不是真正的DOS,那是微软在windows里虚拟的DOS环境,是用来运行一些高级命令的,真正的DOS是脱离系统的。因为他本身就是一种操作系统。因此,可以得出一个结论就是:cmd是一个实现了DOS功能的接口,可以使用DOS的部分功能,支持DOS的部分指令。

cmd命令和linux命令的区别

1.最根本的区别是linux shell是linux操作系统的一个用户交互层;而cmd只是windows系统下的一个小小的应用。

2.shell是介于应用程序和内核之间的壳,所有应用程序要和内核交互都必须要通过shell,包括linux的图形桌面Xwindow;而cmd只是windwows下一个补充,cmd是否存在对windows系统并没有那么重要。

3.linux在没有图形界面下几乎可以完成任何事情,而且比图形桌面更简洁高效,还可以配合shell编程实现自动化;而cmd只是windows下的一个终端模拟器,相当于一个桌面应用,不能单独存在。

4.shell功能强大,体验极佳;cmd蹩脚难用,功能有限。其实windows一直改善cmd,但是总是不够强大,最后还是妥协引入shell,比如win7的powershell和win10的linux shell,尽管还是没有专业的shell强大。这个一定程度上说明了shell远比cmd要强大得多。

一些具体命令的不同
功能
cmd:
linux:
复制文件
cmd:copy
linux:cp
移动文件
cmd:move
linux:mv
列举文件
cmd:dir
linux:ls
清除屏幕
cmd:cls
linux:clear
退出
cmd:exit
linux:exit
显示修改日期
cmd:date
linux:date
删除文件
cmd:del
linux:rm
回响信息到屏幕
cmd:echo
linux:echo
用编辑器编辑文件
cmd:edit
linux:vi
比较文件内容
cmd:fc
linux:diff
在文件中查找字符串
cmd:find
linux:grep
显示命令帮助
cmd:命令/?
linux:man 命令
创建目录
cmd:mkdir
linux:mkdir
删除目录
cmd:rd
linux:rmdir
目录更名
cmd:move
linux:mv
拷贝目录
cmd:xcopy
linux:copy
查看文件
cmd:more
linux:less
重命名文
cmd:ren
linux:mv
切换目录
cmd:cd
linux:cd
显示时间
cmd:time
linux:date
显示已被使用的内存
cmd:mem
linux:free
在屏幕打印文件内容
cmd:type
linux:cat

Linux 系统目录结构

系统启动必须:
/boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。
/etc:存放所有的系统需要的配置文件和子目录列表,更改目录下的文件可能会导致系统不能启动。
/lib:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中

指令集合:
/bin:存放着最常用的程序和指令
/sbin:只有系统管理员能使用的程序和指令。

外部文件管理:
/dev :Device(设备)的缩写, 存放的是Linux的外部设备。注意:在Linux中访问设备和访问文件的方式是相同的。
/media:类windows的其他设备,例如U盘、光驱等等,识别后linux会把设备放到这个目录下。
/mnt:临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

临时文件:
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
/lost+found:一般情况下为空的,系统非法关机后,这里就存放一些文件。
/tmp:这个目录是用来存放一些临时文件的。
账户:

/root:系统管理员的用户主目录。
/home:用户的主目录,以用户的账号命名的。
/usr:用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/usr/bin:系统用户使用的应用程序与指令。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。

运行过程中要用:
/var:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。
/proc:管理内存空间!虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改。

扩展用的:
/opt:默认是空的,我们安装额外软件可以放在这个里面。
/srv:存放服务启动后需要提取的数据(不用服务器就是空)

更多推荐

Linux常用指令