Linux基础

Linux目录结构

只介绍几个主要的目录:

  • /root:该目录为系统管理员,也称作超级权限者的用户主目录。
  • /home:存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
  • /opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
  • /var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
  • /usr: 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。
  • /tmp:这个目录是用来存放一些临时文件的。
  • /etc:所有的系统管理所需要的配置文件和子目录。
  • /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
  • /dev:Device(设备)的缩写,该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

vi/vim编辑器

一般模式

​ vi 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、粘贴』来处理你的文件数据。

常用语法:

指令 功能描述
yy 复制光标当前一行
y数字y 复制一段(从第几行到第几行)
p 粘贴
u 撤销
dd 删除光标当前行
d数字d 删除光标后(含)多少行
x 删除一个字母
yw 复制一个词
dw 删除一个词
shift+^ 移动到行头
shift+$ 移动到行尾
1+shift+g 移动到页头
shift+g 移动到页尾
数字N+shift+g 移动到目标行

编辑模式

​ 在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母之后才会进入编辑模式。通常在 Linux 中,按下这些按键时,在画面的左下方会出现『INSERT 或 REPLACE 』的字样,此时才可以进行编辑。而如果要回到一般模式时, 则必须要按下『Esc』这个按键即可退出编辑模式。

进入编辑模式:

  • i:当前光标前
  • a:当前光标后
  • o:当前光标的下一行

退出编辑模式:按『Esc』这个键

指令模式

​ 在一般模式当中,输入『 : / ?』3个中的任何一个按钮,就可以将光标移动到最底下那一行。在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等动作是在此模式中达成的!

  • : w:保存,q:退出,!: 感叹号强制执行,:wq!强制保存退出
  • / 查找,/被查找词,n是查找下一个,shift+n是往上查找
  • ? 查找,?被查找词,n是查找上一个,shift+n是往下查找

系统管理操作

centOS7 系统

  • 查看防火墙状态:firewall-cmd --state

  • 开启防火墙:sudo systemctl start firewalld

  • 关闭防火墙:systemctl stop firewalld.service

  • 禁止firewall开机启动:systemctl disable firewalld.service

  • 重启防火墙:firewall-cmd --reload

  • 查看开放的端口:firewall-cmd --list-ports

  • 开放端口: firewall-cmd --zone=public --add-port=9200/tcp --permanent

  • --permanent #永久生效,没有此参数重启后失效

常用基本命令

文件目录

  • pwd : 显示当前工作目录的绝对路径

  • lsls [选项] [目录或是文件] -a:全部的文件,包含隐藏文件;-l:包含文件的属性与权限等数据

  • mkdir:创建一个新的目录,mkdir [-p] 要创建的目录 -p:创建多层目录

  • rmdir:删除一个空的目录,rmdir 要删除的空目录

  • touch:创建空文件,touch 文件名称

  • cd:切换目录,cd 绝对路径cd 相对路径cd ~或者cd回到自己的家目录;cd-回到上一次所在目录;cd ..回到当前目录的上一级目录;cd -p跳转到实际物理路径,而非快捷方式路径

  • cp:复制文件或目录,cp [-r] sourceFolder targetFolder -r:递归复制整个文件夹

  • rm:移除文件或目录,rm -rf deleteFile,递归删除目录中所有内容

  • mv:移动文件与目录或者重命名,mv oldNameFile newNameFile,重命名,mv /temp/moveFile /targetFolder,移动文件

  • cat:查看文件内容,从第一行开始显示

    -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!

    -E :将结尾的断行字节 $ 显示出来;

    -n :列出行号,连同空白行也会有行号,与 -b 的选项不同;

    -T :将 [tab] 按键以 ^I 显示出来;

    -v :列出一些看不出来的特殊字符

    -A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已;

  • tac:查看文件内容,从最好一行开始显示,可以看出tac是cat的倒着写

  • more:查看文件内容,一页一页的显示文件内容

    空白键 (space):代表向下翻一页;

    Enter:代表向下翻『一行』;

    q:代表立刻离开 more ,不再显示该文件内容。

    Ctrl+F 向下滚动一屏

    Ctrl+B 返回上一屏

    = 输出当前行的行号

  • less:查看文件内容,允许使用『 pageup』『 pagedown』往回滚动

    空白键 :向下翻动一页;

    [pagedown]:向下翻动一页;

    [pageup] :向上翻动一页;

    /字串:向下搜寻『字串』的功能;n:向下查找;N:向上查找;

    ?字串:向上搜寻『字串』的功能;n:向上查找;N:向下查找;

    q :离开 less 这个程序;

  • head:查看文件内容,只看头几行,head -n 10 文件名

  • tail:查看文件内容,只看尾几行,tail -n 10 文件名

    tail -f 文件名:实时追踪该文档的所有更新(监控日志文件)

  • echoecho 要显示的内容 >> 存储内容的文件 ,将要显示的内容存储到文件中

  • lnln -s 原文件 目标文件,给原文件创建一个软链接

  • history:查看所敲命令历史

用户组管理命令

  • groupadd 组名,基本语法
  • groupdel 组名,删除组
  • groupmod -n 新组名 老组名,修改组
  • cat /etc/group,查看创建了哪些组

用户管理命令

  • useradd 用户名:添加新用户
  • passwd 用户名:设置用户密码
  • id 用户名:判断用户是否已经存在
  • su 用户名:切换用户
  • userdel 用户名:删除用户但保存用户主目录,userdel -r 用户名:用户和用户主目录都删除
  • who:查看当前有哪些用户登录到了本台机器上
  • cat /etc/passwd:查看创建了哪些用户
  • usermod -g 用户组 用户名:修改用户所属组

文件权限

  • chmod [{ugoa}{+-=}{rwx}][文件或目录] [mode=421] [文件或目录]:改变权限

    chmod u+x test1.java chmod g+x test1.java chmod o+x test1.java chmod 777 test1.java chmod -R 777 testdir

  • chown [最终用户] [文件或目录]:改变文件或者目录的所有者

  • chgrp [最终用户组] [文件或目录]:改变文件或者目录的所属组

进程线程

  • ps -aux :查看系统中所有进程,ps -aux | grep redis:包含redis关键字的进程

USER:该进程是由哪个用户产生的

PID:进程的ID号

%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;

%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;

VSZ:该进程占用虚拟内存的大小,单位KB;

RSS:该进程占用实际物理内存的大小,单位KB;

TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面端,tty7是图形终端。pts/0-255代表虚拟终端。

STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台

START:该进程的启动时间

TIME:该进程占用CPU的运算时间,注意不是系统时间

COMMAND:产生此进程的命令名

  • top [选项]:查看系统健康状态

    选项:

    -d 秒数:指定top命令每隔几秒更新。默认是3秒在top命令的交互模式当中可以执行的命令:

    -i:使top不显示任何闲置或者僵死进程。

    -p:通过指定监控进程ID来仅仅监控某个进程的状态。

    -s : 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。

    操作选项:

    P: 以CPU使用率排序,默认就是此项

    M: 以内存的使用率排序

    N: 以PID排序

    q: 退出top

    查询结果字段解释:

第一行信息为任务队列信息:

内容 说明
13:31:03 系统当前时间
up 83 day, 2:47 系统的运行时间,本机已经运行83天2小时47分钟
2 users 当前登录了两个用户
load average: 0.15, 0.15, 0.13 系统在之前1分钟,5分钟,15分钟的平均负载。一般认为小于1时,负载较小。如果大于1,系统已经超出负荷。

第二行为进程信息:

Tasks: 80total 系统中的进程总数
1 running 正在运行的进程数
78 sleeping 睡眠的进程
1 stopped 正在停止的进程
0 zombie 僵尸进程。如果不是0,需要手工检查僵尸进程

第三行为CPU信息:

%Cpu(s): 1.7us 用户模式占用的CPU百分比
1.7 sy 系统模式占用的CPU百分比
0.0 ni 改变过优先级的用户进程占用的CPU百分比
95.6 id 空闲CPU的CPU百分比
0.7 wa 等待输入/输出的进程的占用CPU百分比
0.0 hi 硬中断请求服务占用的CPU百分比
0.3 si 软中断请求服务占用的CPU百分比
0.0 st st(Steal time)虚拟时间百分比。就是当有虚拟机时,虚拟CPU等待实际CPU的时间百分比。

第四行为物理内存信息:

Mem: 1883724 total 物理内存的总量,单位KB
427124 used 已经使用的物理内存数量
468592 free 空闲的物理内存数量
988008 buff/cache 作为缓冲的内存数量

第五行为交换分区信息:

Swap: 0 total 交换分区(虚拟内存)的总大小
0 used 已经使用的交互分区的大小
0 free 空闲交换分区的大小
1183936 avail Mem 可用交换取总量
  • pstree [选项]:查看进程树;-p:显示进程PID,-u:显示进程所属用户

  • kill:终止进程,kill -9 pid进程号 ,-9表示强迫进程立即停止

压缩与解压

  • gzip/gunzip压缩:只能压缩文件不能压缩目录,不保留原来的文件,gzip test.java

  • zip/unzip压缩:zip + 参数 + XXX.zip + 将要压缩的内容 ,-r 压缩目录

  • tar打包:tar + 参数 + XXX.tar.gz + 将要打包进去的内容,打包目录,压缩后的文件格式.tar.gz

    参数:

    -c 产生.tar打包文件

    -v 显示详细信息

    -f 指定压缩后的文件名

    -z 打包同时压缩

    -x 解包.tar文件

    例:

    压缩:tar -zcvf XXX.tar.gz n1.txt n2.txt

    解压:tar -zxvf XXX.tar.gz -C 解压目的地