Linux 基础

Linux 目录结构

 

Linux 文件系统为级层式树形结构,有且只有一个根目录 /,在此基础创建分支。在 Linux 中,一切皆文件。Linux 是以文件的 形式管理设备的。

文件存放位置是规划好的,按照要求存放文件。

  • /bin:存储常用指令
  • /boot:linux 的核心文件,包括连接文件和镜像文件
  • /lib:存放系统最基本的动态连接共享库
  • /dev:存放 linux 外部设备
  • /mnt:临时挂载别的文件系统,如本地文件挂载在服务器
  • /lost+found:存放系统非法关机的碎片文件
  • /media:识别 U 盘光驱等设备挂载在此目录
  • /proc:虚拟目录,是系统内存的映射,可以访问该目录获取系统信息
  • /root:系统管理员的主目录
  • /sbin:存放系统管理员使用的系统管理程序
  • /srv:存放一些服务启动后需要提取的数据
  • /sys:文件系统
  • /run:系统运行所需文件,系统重启时该目录文件也被删除
  • /var:存放系统执行过程中经常改变的文件,如日志等
  • /tmp:临时文件目录
  • /usr:存放用户的应用程序和文件
  • /opt:存放系统可选程序,以便随时删除
  • /etc:存放系统管理所需要的配置文件和子目录
  • /home:用户主目录,由于是多用户系统,每个用户都有一个以账号名命名的目录
  • /www:存放服务器网站相关资源

Vi 和 Vim 编辑器

Linux 操作系统自带 Vi 文本编辑器,类似于 Windows 操作系统中的记事本。Vim 具有程序编辑能力,具有字体颜色区分、代码补全、编译及错误跳转等功能,是 Vi 的加强版。

Vi 和 Vim 的三种模式 进入编辑器默认是一般模式,在命令行模式或者编辑模式可以按下 ESC 进入一般模式。在一般模式下输入:或者 / 可进入命令行模式。

  • 正常 / 一般模式 进入编辑器后的默认模式,可以使用快捷键,如通过上下左右移动光标。
  • 编辑 / 插入模式 在一般模式,按下 i 或 a 后才会进入编辑模式,进入编辑模式后可以输入内容。
  • 命令行模式 可以提供相关指令完成读取、存盘、替换、离开 vim、显示行号等功能。常用的命令有:wq 保存并退出,q 退出,q! 强制退出不保存。

vim 常用快捷键

  • 复制粘贴 在一般模式下输入 yy 即可复制,如果要复制多行可以输入行数yy。复制后输入 p 即可粘贴。
  • 删除某一行 在一般模式下输入 dd 即可删除当前行,如果要删除多行可以输入行数dd 即可删除多行。
  • 查找关键字 在命令行模式下输入 /关键字回车查找,在一般模式下输入 n 就是查找下一个。
  • 设置行号和取消设置行号 在命令行模式下输入:set nu 可以设置行号,输入:set nonu 可以取消设置行号。
  • 回到文件首行或到文件末行 在一般模式输入 G 可以直接跳转到最末行,输入 gg 可以回到首行。
  • 撤销命令 在一般模式下输入 u 可以撤销上个操作。
  • 将光标移动到指定行 先显示出行号,在一般模式下输入要跳转的行号,在按 shift+g 完成跳转。

Linux 运行级别

Linux 系统共有 7 个不同的运行级别,类似于 windows 操作系统中的正常启动与安全模式启动。这 7 个级别分别为

  • 0:关机
  • 1:单用户 (找回丢失密码)
  • 2:多用户无网络服务
  • 3:多用户有网络服务
  • 4:保留
  • 5:图形界面
  • 6:重启 用的比较多的是 3 和 5,系统运行级别存储在配置文件 /etc/inittab 中,如果需要更改系统运行级别可以使用 init 级别命令进行更改。

Linux 开机流程:开机 ->BIOS->/boot->init 进程 1-> 运行级别 -> 运行级对应服务

假如忘记 root 密码,可以在系统启动时输入 e,在 linux16 行将 ro 改为 rw,并且在最后加上 init=/bin/sh,之后按下 ctrl+x 进入单用户模式,此时输入 passwd 可直接修改密码,修改成功后输入 touch/.autorelabel 回车在输入 exec/sbin/init 回车以重启系统。

用户管理

Linux 系统的 root 账户权限过大,一般不登陆 root 账户。可以给不同使用者创建多个账户,为不同账户分配不同的用户组。每个用户创建后在 home 目录会自动生成以用户名命名的家目录,该用户登录后默认进入家目录。

添加用户

使用 useradd [-d 指定目录名] 用户名命令添加用户,如果没有指定组则自动创建一个同名组将用户放入。可选参数 -d 可以不创建同名家目录,而是指定一个目录作为家目录。

创建用户后可以使用 passwd 用户名为用户创建或修改密码。

删除用户

使用 userdel [-r] 用户名可以删除用户,不带参数仅删除用户,但是其家目录仍然存在。如果加上可选参数 -r,则删除用户的同时会删除其家目录。实际开发中一般不删除家目录。

查询用户信息

使用 id 用户名可以查询指定用户的信息。如果用户不存在则返回无此用户。

切换用户

如果登录的普通用户权限不够,需要登录高权限账户,可以使用 su -用户名切换用户,从高权限切换低权限不需要输入密码,反之需要输入密码,需要返回原来用户直接使用 exit 指令。

用户组

使用 groupadd 组名可以增加组,使用 groupdel 组名可以删除组。在创建用户时也可以直接指定组,如 useradd -g 用户组 用户名。创建用户后如果要修改用户组,使用 usermod -g 用户组 用户名指令。

用户和组相关文件

  • /etc/passwd 文件
  • 描述:用户配置文件,记录用户各种信息 每行含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell
  • /etc/shadow 文件
  • 描述:口令配置文件,记录用户密码,为加密文件 每行含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
  • /etc/group 文件
  • 描述:组配置文件,记录系统包含的组信息 每行含义:组名:口令:组标识号:组内用户列表

组与权限管理

Linux 系统是一种多用户系统,为了系统安全性,不同的用户拥有不同的权限。

qx

其中文件个数部分,如果是文件表示文件硬链接的数量,如果是目录表示该目录下子目录的个数。文件大小部分,如果是目录,统一显示大小 4096。创建时间会因为文件的修改而变为修改时间。

文件类型

在最前面的字符串中,第一个字符表示文件类型:

  • [d] 目录
  • [-] 文件
  • [l] 链接文档,链接文档名后跟指向路径
  • [b] 接口设备,如硬盘
  • [c] 串行端口设备,如键盘鼠标

文件权限

后九个字符三个为一组,第一组表示文件属主 (文件所有者) 权限,第二组表示属组 (所有者同组用户) 权限,第三组表示其他用户权限:

  • [r] 即 read,可读权限
  • [w] 即 write,可写权限
  • [x] 即 execute,可执行或可进入权限
  • 声明权限的位置固定,如果该位置为 [-],表示没有该权限

注意:如果文件权限作用目标是文件,拥有写权限可以修改,但不一定可以删除,删除需要对该文件所在的目录有写权限才能删除。

更改属主属组

文件属主或属组可以通过命令更改,但是一般不更改:

  • chgrp [-R] 属组名 文件名 更改文件属组,-R 表示子目录同时更改
  • chown [-R] 属主名 文件名 更改文件属主 c
  • hown [-R] 属主名:属组名 文件名 更改文件属主同时更改属组

更改文件权限

文件能否读写执行的权限可以通过 chmod [-R] xyz 文件或目录命令更改。xyz 位置分别表示属主、属组、其他用户的权限。有两种设置方式,一种是数字,一种是符号。一般使用数字表示法。

数字表示时,r 的权值为 4,w 权值为 2,x 权值为 1,每个身份的权限等于每个权限权值累加。如 751 表示属主可读可写可执行,属组可读可执行,其他用户只可执行。

符号表示时,权限使用 rwx 表示,身份使用 ugoa 表示,u 表示属主,g 表示属组,o 表示其他用户,a 表示所有用户。设置权限时可以使用身份=权限赋予,多个身份用逗号隔开,如 chmod u=rwx,g=rx,o=x test.txt。当需要给某个身份添加权限,使用身份+权限,给某个身份删除权限使用身份-权限,如 chmod ugo+r test.txt 表示将文件设置为所有人可读。

crond 定时任务调度

在 Linux 中有一些任务需要定时执行或周期执行,比如扫描病毒、备份数据库等。为了让系统在某个时间执行特定的命令或程序,可以使用 crontab 进行定时任务设置。

它的基本语法是 crontab [可选参数],常用可选参数有:-e:编辑定时任务;-l:查询定时任务;-r:删除当前用户所有定时任务。

  • crontab 文件格式与参数说明:格式:minute hour day month week command;参数说明:
  • minute:分钟,0-59
  • hour:小时,0-23
  • day:日期,1-31
  • month:月份,1-12
  • week:星期几,0-7,0 和 7 都代表星期日
  • command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件

上面的参数中有几个特殊字符:

  • 星号 (*) 代表所有能取的值
  • 逗号 (,) 隔开列表范围,如”1,3,5”
  • 短横线 (-) 表示一个范围,如”3-9”
  • 斜线 (/) 表示间隔频率,如”0-23/2” 表示每两小时执行一次

常用的 Linux 命令

文件目录相关命令

文件内容查看 命令

输出重定向与追加

>指令:输出重定向,会将原来的内容覆盖

>>指令:追加,不会覆盖原有内容,而是追加到文件末尾

如 ls -l > a.txt 表示将 ls -l 显示的内容覆盖写入 a.txt 中,如果文件不存在则创建,如果存在直接覆盖写入。

如 echo "hello" >> b.txt 表示将字符串 hello 追加到 b.txt 文件的末尾。

搜索查找相关命令

find

  • 功能:从指定目录向下递归子目录,将满足条件的文件或目录在控制台显示
  • 语法:find 搜索范围 [可选项]
  • 常用可选参数:-name 按文件名查找、-user 查找属于指定用户所有文件、-size 按指定文件大小查找文件

find /home -name *.txt #查找home下所有txt

find /opt -user wumu #查找opt目录下wumu用户的所有文件

find / -size +20M #查找系统中所有大于20M的文件 其中+表示大于 -表示小于 不写表示等于

locate

  • 功能:快速定位文件路径
  • 语法:locate 搜索文件
  • 注意事项:locate 指令利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位,无需遍历,所以查询速度快,但为了保证查询结果准确,要定期更新 locate 数据库。由于结果来自数据库,所以第一次运行要使用 updatedb 指令创建 locate 数据库。
    • updatedb #创建数据库
    • locate test.txt #定位名称为test.txt文件的路径

grep

  • 功能:过滤查找,结合管道符使用。
  • 管道符”|” 表示将前一个命令的处理结果输出传递给后面的命令处理。
  • 语法:grep [可选项] 查找内容 源文件
  • 常用可选参数:-n 显示行号,-i 忽略字母大小写
    • cat a.txt | grep -n wumu #查找a.txt中wumu是否存在,若存在在哪一行

压缩和解压相关命令

gzip 和 gunzip 压缩解压

  • 功能:gzip 用于将文件压缩为.gz 格式的文件,gunzip 用于将文件解压
  • 语法:gzip 文件名 \ gunzip 文件名.gz
  • 注意事项:使用 gizp 和 gunzip 命令后,源文件不会保留,如果要保留源文件可以使用 - c 参数并使用重定向。gzip 只能压缩文件,不能压缩目录
    • gzip test.txt #test文本文档被压缩且源文件删除
    • gzip -c test.txt > /home/test.gz #保留原文件压缩
    • gunzip test.txt.gz #解压text文件且源文件删除

zip 和 unzip 压缩解压

  • 功能:zip 用于将文件或目录压缩为.zip 格式的文件,unzip 用于将文件解压
  • 语法:zip 文件名.zip 要压缩的内容 \ unzip 文件名.zip
  • 常用可选参数:
    • zip:-r:递归压缩,即压缩目录;
    • unzip:-d:指定解压位置
  • 注意事项:使用 zip 和 unzip 命令后,源文件不会被删除,zip 不仅能压缩文件,也能压缩目录
    • zip -r mypackage.zip /home/ #将home下的所有文件压缩以mypackage.zip命名,源文件保留
    • unzip -d /opt/tmp/ mypackage.zip #将mypackage.zip解压到/opt/tmp/目录下

tar 压缩和解压

  • 功能:将文件打包或解压
  • 语法:tar [可选项] 文件名.tar.gz 要打包的内容
  • 常用可选参数:
    • -c:建立新存档;
    • -z:解压或压缩;
    • -v:显示详细信息;
    • -f:指定存档或设备;
    • -x:将文件解压;
    • -C:指定解压位置
  • tar -zcvf a.tar.gz a1.txt a2.txt #将a1.txt a2.txt打包压缩为a.tar.gz,源文件保留 t
  • ar -zcvf myhome.tar.gz /home/ #将home目录所有内容打包压缩为myhome.tar.gz t
  • ar -zxvf a.tar.gz #将a.tar.gz解压到当前目录
  • tar -zxvf myhome.tar.gz -C /opt/tmp/ #将myhome.tar.gz解压到/opt/tmp/,指定目录不会自动创建,要事先存在

系统相关命令

磁盘分区和挂载

Linux 采用挂载和卸载的处理方法,无论有几个分区,分给哪一个目录使用,它最终都只有一个根目录,一个独立且唯一的文件结构,Linux 中每个分区都是用来组成文件系统的一部分。

Linux 中的硬盘一般是 SCSI 硬盘,驱动器标识为 sdx~,其中 sd 表示分区所在设备的类型为 SCSI 硬盘,x 为盘号,a 为基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘,~ 代表分区,前四个分区用 1-4 表示,它们是主分区或扩展分区,从 5 开始是逻辑分区。

如 sda2 表示第一个 SCSI 硬盘上的第二个分区。可以使用 lsblk -f 查看本机分区和挂载情况。

lsblk

新增硬盘后如何分区并挂载:

  • 添加硬盘
  • 使用 fdisk /dev/sdb 指令分区,其中 m 是显示命令列表;p 显示磁盘分区;n 新增分区;d 删除分区;w 写入并退出
  • 使用 mkfs -t ext4 /dev/sdb1 指令格式化
  • 使用 mount /dev/sdb1 /home/newdisk 指令挂载
  • 使用 vim /etc/fstab 指令编辑文件设置自动挂载,设置后使用 mount -a 开启自动挂载 如果不需要硬盘,可以使用 umount /dev/sdb1或umount /newdisk 指令卸载

进程管理

进程的基本介绍

  • 在 Linux 中,每个执行的程序都称为一个进程,每个进程都分配一个 ID 号
  • 每一个进程都对应一个父进程,父进程可以复制多个子进程
  • 每个进程都以前台和后台两种方式存在,前台进程是用户在屏幕上可以操作的进程,后台进程是实际在操作,但屏幕无法看到的进程,通常使用后台方式执行
  • 一般系统的服务都以后台进程存在,且常驻在系统中,直到系统关机

进程相关命令

查看进程

使用 ps 命令可以查看目前系统中正在执行的进程及状况,常用可选参数有

- a:显示当前终端的所有进程信息;-u:以用户的格式显示进程信息;-x:显示后台进程的运行参数

jc

其中 PID 表示进程标识号,TTY 表示终端机号,TIME 表示进程占用 CPU 时间,CMD/COMMAND 表示进程执行时的命令行,% CPU 表示占用内存情况,% MEM 表示占用内存情况,VSZ 表示使用虚拟内存情况,RSS 表示使用物理内存的情况,START 表示进程启动的时间,STAT 表示进程的状态,其中 S 表示睡眠,s 表示该进程是会话的先导进程,N 表示进程拥有比普通优先级更低的优先级,R 表示正在运行,D 表示短期等待,Z 表示该进程为僵死进程,T 表示被跟踪或被停止。

进程过多不好找到需要的信息,可以使用管道符加 grep 过滤。如查找系统进程中是否有 sshd:ps -aux | grep sshd。

如果想要查找某进程的父进程,可以使用 ps -ef 查看,信息中的 PPID 表示父进程的标识号。

使用 pstree 命令可以以进程树的形式更直观的查看进程信息,它的常用可选参数有

- p:显示进程 PID;-u:显示进程的所属用户

动态监控进程

使用 top 命令可以动态的监控进程状态,它的常用可选参数有

  • - d 秒数:指定 top 命令每隔几秒更新一次,不设置默认为 3 秒;
  • -i:使 top 命令不显示任何闲置或僵死进程;
  • -p 通过指定监控进程 ID 来仅监控某一个进程的状态。

在动态监控的过程中可以按 P 使列表以 CPU 使用率排序,按 M 使列表以内存使用率排序,按 N 使列表以 PID 排序,按 u 回车输入用户名可以监控特定用户,按 k 回车输入进程 PID 可以终止指定进程,按 q 退出动态监控。

top

终止进程

如果某个进程执行到一半需要停止,或者某个进程消耗了过多系统资源,可以使用 kill或killall 命令终止该进程。

kill 命令通过进程号终止进程,killall 命令通过进程名称终止该进程,也支持通配符。同时 kill 有可选参数 - 9:表示强迫进程立即停止。

服务管理

服务本质上也是进程,但是它在后台运行,并且通常都监听一个端口,等待其他程序的请求,如 mysql,防火墙等,因此也叫守护进程。

服务管理相关指令

  • service 服务名 start 开启服务
  • service 服务名 stop 关闭服务
  • service 服务名 restart 重启服务
  • service 服务名 reload 重载服务
  • service 服务名 status 服务状态
  • setup -> 系统服务或 ls -l /etc/init.d/ 查看服务列表

使用这种命令开启或关闭某个服务是立即生效的,但是当重启系统后还是回归原来服务的设置。如果要使某个服务自启动或关闭永久生效,可以使用 chkconfig 命令给各个运行级别的服务设置自启动或关闭,设置后需要重启才会生效。如:

  • #查看服务列表,列表显示了所有服务在各个运行级别的状态,如果要查询某个服务可以使用管道符过滤或者直接使用chkcongig 服务名 --list chkcongig --list
  • #设置服务在某个运行级别自启动或关闭
  • chkconfig --level 5 sshd off

在服务启动后,可以在 windows 主机上的 cmd 中使用 telnet ip 端口命令测试服务是否启动成功。

Centos7.0 后除了 service,也可以使用 systemctl

并且后者查询到的服务更全面,推荐使用。

监控网络服务状态

使用 netstat 命令可以查看网络状态,其中常用可选参数有 - an:按一定顺序排列输出;-p:显示那个进程在调用。

如使用 netstat -anp |grep sshd 可以直接查看系统中所有 sshd 相关的网络服务。

netstat

RPM 和 YUM 包管理

rpm 是一种用于互联网下载包的打包及安装工具,生成具有.RPM 扩展名的文件。

yum 是一个 shell 前端软件包管理器,它基于 rpm 包管理,能从指定服务器下载 rpm 包并安装,并且能自动处理依赖关系,一次安装所有依赖软件包。现在一般直接使用 yum 下载安装软件,由于是从网络直接下载安装,使用 yum 需要联网。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值