linux的常用命令

linux可以说事现在最流行的服务器操作系统了,作为一名java程序员,熟悉linux命令已经是很必需的技术手段了,毕竟作为后端,运维维护的事还少吗。。。

目录结构

在说到命令之前,就先普及下linux的各个文件说明,使用命令的时候也可以知道这个文件是干嘛的,另外斟酌使用 rm 命令!

版本为:centOS 6.8
ls

文件名 说明
/bin 这个目录存放着最经常使用的命令
/boot 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc 这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home 用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib 这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/opt 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
/root 该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin 这里存放的是系统管理员使用的系统管理程序。
/selinux 这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv 该目录存放一些服务启动之后需要提取的数据。
/sys 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
/tmp 这个目录是用来存放一些临时文件的。
/usr 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/var 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

注1:在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

注2:/etc: 这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

注3:/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下。

文件属性

说文件,就要说下用户组了,因为每个文件都会有用户组的属性,linux有3种用户组,分别是:

组类型 组说明
所有者 文件的创建者
所在组 当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组
其它组 除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

看图说话,讲解下文件属性和权限

ls

  • 首先说说第一列 dr-xr-xr-x. 和 drwxr-xr-x 的权限设定
    • 第一个字符: d 代表目录,如果是(-)代表文件,(|)代表链接,还有其他类型就不说明了
    • 右边其余字符,3个字符为一组,分别代表三个组的权限,所有者(rwx),所在组(r-x),其他组(r-x)
    • r 代表可读,w 代表可写,x 代表可执行,- 代表没有权限
    • 所以 dr-xr-xr-x = 该目录的所有者和所在组,其他组具有可读可执行权限,但不具备可写权限
    • 另外这些权限也可以用数字代表,如下表格,每一个字符都代表一个数字:
文件类型 所有者 所在组 其他组
0 r,w,x = 1,2,3 r,-,x = 4,5,6 r,-,x = 7,8,9
  • 然后第二列的数字,视情况可代表链接数和子目录数
  • 第三列 root root ,分别表示用户名和所在组名
  • 第四列代表文件大小
  • 第五列代表最后修改时间
  • 第六列代表文件名

那么下面开始介绍常用的linux命令

常用命令

文件目录

ls命令:列出目录

命令 说明
ls 查看目录中的文件
ls -l 以列表形式,显示目录的文件
ls -a 列出全部文件,包含隐藏文件
ls -R 连同子目录的内容一起列出
ls -lh 以列表形式,显示文件和目录的大小

cd命令:用于切换目录

命令 说明
cd /usr 进入 ‘/ usr’ 目录
cd .. 返回上一级目录
cd 进入个人的主目录
cd ~ 进入个人的主目录
cd - 返回上次所在的目录

pwd命令:用于显示当前目录路径

命令 说明
pwd 显示当前目录路径
pwd -P 显示出确实的路径,而非使用连结 (link) 路径

mkdir命令:创建一个新的目录

命令 说明
mkdir test 在当前目录,创建名为test的文件夹
mkdir -p test/test2/test3 在当前目录,创建多层文件夹

cp命令: 复制文件或目录

命令 说明
cp test /tmp 复制test文件到 tmp 目录
cp -i test /tmp 复制test文件到 tmp 目录,若已存在则覆盖
cp -p test /tmp 复制test文件到 tmp 目录,并保留文件属性
cp -r test /tmp 复制一个目录所有内容到tmp目录,包含子文件夹

rm命令: 删除文件或目录

命令 说明
rm conf.swp 删除文件
rm -r tmp 删除整个目录,注意高能使用!

mv命令: 移动文件与目录,或修改文件与目录的名称

命令 说明
mv conf.swp /tmp 移动文件到tmp目录
mv -i conf.swp /tmp 移动文件到tmp目录,若已存在则询问是否覆盖
mv conf.swp conf2.txt 修改名称

文件内容

cat命令:显示文件所有内容

命令 说明
cat conf.swp 显示该文件内容

tail命令:取出文件后面几行

命令 说明
tail -n 5 /etc/man.config 查看该文件的最后5行
tail -n +10 /etc/man.config 从10行开始显示后面的所有内容
tail -f /etc/man.log 持续显示后面加载的运行的内容,ctrl+c退出

grep命令:查找内容并显示

命令 说明
grep -A 10 ‘null:8009’ catalina.out 若查找到信息,则显示当前行的后10条日志
grep -B 10 ‘null:8009’ catalina.out 若查找到信息,则显示当前行的前10条日志

文件权限

chmod命令:文件权限更改

这个命令作用于三个组,又包含三个权限,分别是可读,可写,可执行
字母的表达式:

  • u 表示该文件的所有者,g 表示所在组,o 表示其他组,a 表示这三者皆是。
  • 增加权限用 + ,取消权限用 -,唯一设定权限用 =
  • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

数字的表达式:

  • 其中三个用户组权限用三个数字表示,如777 = uga。r=4,w=2,x=1
  • 若要 rwx 属性则4+2+1=7,代表可读可写可执行;
  • 若要 rw- 属性则4+2=6,代表可读可写,不可执行;
  • 若要 r-x 属性则4+1=5,代表可读可执行,不可写。
  • 若要 –x 属性则为1,代表可执行,不可读写。
  • 若为0,则代表不可读写和不可执行
命令 说明
chmod ugo+r test.txt 表示该文件所有人都可以读取,不可执行
chmod a+r test.txt 同上
chmod 666 test.txt 同上
chmod 777 test.txt 表示该文件所有人都可以读取,可执行
chmod -R 777 /usr/git 表示该目录下所有文件,所有人都可以读取,可执行
chmod 007 test.txt 表示该文件只有其他组可以读取,可执行,所有者和所在组没有权限

chown命令:改变文件用户组

命令 说明
chown git:git test.txt 表示该文件的所有者为git,所在组为git
chown -R git:git /usr/git 表示该文件目录下的所有文件,所有者为git,所在组为git

打包和压缩

tar命令:打包和压缩

命令 说明
tar -czvf test.tar.gz test 压缩test目录为 test.tar.gz
tar -xzvf test.tar.gz -C /tmp 解压文件到tmp目录

系统进程

ps命令:查询运行的进程






命令 说明
ps aux 查看所有运行的进程信息
ps aux|grep service 查看与service相关的进程信息
ps axjf 查看进程树状态,可显示目录

kill命令:关闭进程

命令 说明
kill pid 根据进程pid关闭进程
kill -9 pid 强制关闭

top命令:资源分析

命令 说明
top 实时显示进程信息
top -p pid 显示当前pid的实时进程信息
top -n 5 -d 2 -n表示更新次数,-d表示刷新时间,指的是2秒刷新,5次后退出

netstat:端口查询

命令 说明
netstat -a 显示详细的网络情况
netstat -ap 查看所有的服务端口并显示对应的服务程序名
netstat -nltp 查看开放了的端口信息
netstat -nltp grep 80 查询80端口号的信息

系统关机

命令 说明
reboot 系统重启
logout 用户注销
init 0 关闭系统

开发中比较常用的命令差不多就是这些了,具体的还可各自继续深入。

关联文档

Linux命令大全:http://www.runoob.com/linux/linux-command-manual.html