侧边栏壁纸
博主头像
LYMTICS

海纳百川,有容乃大

  • 累计撰写 45 篇文章
  • 累计创建 37 个标签
  • 累计收到 19 条评论

目 录CONTENT

文章目录

Linux 基本操作

LYMTICS
2020-06-24 / 0 评论 / 0 点赞 / 67 阅读 / 9,711 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-02-02,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

说明

第一次书写是根据 B站上 尚硅谷Linux课程 编写的

之后(2021.4~) 是看 鸟哥的Linux私房菜 学习的(不定时更新)

Linux目录结构

可分享的(shareable)不可分享的(unshareable)
不变的(static)/usr (软体放置处)/etc (设定档)
不变的(static)/opt (第三方协力软体)/boot (开机与核心档)
可变动的(variable)/var/mail (使用者邮件信箱)/var/run (程序相关)
可变动的(variable)/var/spool/news (新闻群组)/var/lock (程序相关)
目录应放置档案内容
第一部份:FHS 要求必须要存在的目录
/bin系统有很多放置执行档的目录,但/bin比较特殊。因为/bin放置的是在单人维护模式下还能够被操作的指令。 在/bin底下的指令可以被root与一般帐号所使用,主要有:cat, chmod, chown, date, mv, mkdir, cp, bash等等常用的指令。
/boot这个目录主要在放置开机会使用到的档案,包括Linux核心档案以及开机选单与开机所需设定档等等。 Linux kernel常用的档名为:vmlinuz,如果使用的是grub2这个开机管理程式,则还会存在/boot/grub2/这个目录喔!
/dev在Linux系统上,任何装置与周边设备都是以档案的型态存在于这个目录当中的。你只要透过存取这个目录底下的某个档案,就等于存取某个装置啰~比要重要的档案有/dev/null, /dev/zero, /dev/tty , /dev/loop*, / dev/sd*等等
/etc系统主要的设定档几乎都放置在这个目录内,例如人员的帐号密码档、各种服务的启始档等等。一般来说,这个目录下的各档案属性是可以让一般使用者查阅的,但是只有root有权力修改。FHS建议不要放置可执行档(binary)在这个目录中喔。比较重要的档案有: /etc/modprobe.d/, /etc/passwd, /etc/fstab, /etc/issue等等。另外FHS还规范几个重要的目录最好要存在/etc/目录下喔:/etc/opt(必要):这个目录在放置第三方协力软体/opt的相关设定档/etc/X11/(建议):与X Window有关的各种设定档都在这里,尤其是xorg.conf这个X Server的设定档。/etc/sgml/(建议):与SGML格式有关的各项设定档/etc/xml/(建议):与XML格式有关的各项设定档
/lib系统的函式库非常的多,而/lib放置的则是在开机时会用到的函式库,以及在/bin或/sbin底下的指令会呼叫的函式库而已。什么是函式库呢?妳可以将他想成是『外挂』,某些指令必须要有这些『外挂』才能够顺利完成程式的执行之意。另外FHS还要求底下的目录必须要存在:/lib/modules/:这个目录主要放置可抽换式的核心相关模组(驱动程式)喔!
/mediamedia是『媒体』的英文,顾名思义,这个/media底下放置的就是可移除的装置啦! 包括软碟、光碟、DVD等等装置都暂时挂载于此。常见的档名有:/media/floppy, /media/cdrom等等。
/mnt如果妳想要暂时挂载某些额外的装置,一般建议妳可以放置到这个目录中。在古早时候,这个目录的用途与/media相同啦!只是有了/media之后,这个目录就用来暂时挂载用了。
/opt这个是给第三方协力软体放置的目录。什么是第三方协力软体啊?举例来说,KDE这个桌面管理系统是一个独立的计画,不过他可以安装到Linux系统中,因此KDE的软体就建议放置到此目录下了。另外,如果妳想要自行安装额外的软体(非原本的distribution提供的),那么也能够将你的软体安装到这里来。不过,以前的Linux系统中,我们还是习惯放置在/usr/local目录下呢!
/run早期的FHS 规定系统开机后所产生的各项资讯应该要放置到/var/run 目录下,新版的FHS 则规范到/run 底下。由于/run 可以使用记忆体来模拟,因此效能上会好很多!
/sbinLinux有非常多指令是用来设定系统环境的,这些指令只有root才能够利用来『设定』系统,其他使用者最多只能用来『查询』而已。 放在/sbin底下的为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令。 至于某些伺服器软体程式,一般则放置到/usr/sbin/当中。至于本机自行安装的软体所产生的系统执行档(system binary),则放置到/usr/local/sbin/当中了。常见的指令包括:fdisk, fsck, ifconfig, mkfs等等。
/srvsrv可以视为『service』的缩写,是一些网路服务启动之后,这些服务所需要取用的资料目录。常见的服务例如WWW, FTP等等。举例来说,WWW伺服器需要的网页资料就可以放置在/srv/www/里面。不过,系统的服务资料如果尚未要提供给网际网路任何人浏览的话,预设还是建议放置到/var/lib 底下即可。
/tmp这是让一般使用者或者是正在执行的程序暂时放置档案的地方。这个目录是任何人都能够存取的,所以你需要定期的清理一下。当然,重要资料不可放置在此目录啊!因为FHS甚至建议在开机时,应该要将/tmp下的资料都删除唷!
/usr第二层FHS 设定,后续介绍
/var第二曾FHS 设定,主要为放置变动性的资料,后续介绍
第二部份:FHS 建议可以存在的目录
/home这是系统预设的使用者家目录(home directory)。在你新增一个一般使用者帐号时, 预设的使用者家目录都会规范到这里来。比较重要的是,家目录有两种代号喔:~:代表目前这个使用者的家目录~dmtsai:则代表dmtsai的家目录!
/lib用来存放与/lib 不同的格式的二进位函式库,例如支援64 位元的/lib64 函式库等
/root系统管理员(root)的家目录。之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时, 该目录就能够拥有root的家目录,所以我们会希望root的家目录与根目录放置在同一个分割槽中。

(此表源鸟哥的Linux私房菜)

  • linux系统的根目录只有一个("/")
  • "一切皆文件" 通过文件管理各种设备

    • [重点]/bin 是binary的缩写, 存放着最常用的命令
    • [重点]/sbin s是super的意思, 存放系统管理员使用的系统管理程序
    • [重点]/home 存放普通用户的主目录, 在linux中每个用户都有一个自己的目录, 一般该目录名是以用户的账号命名的
    • [重点]/root 该目录为系统管理员, 也成为超级权限者的用户主目录
    • /lib 系统开机所需要的最基本的动态连接共享库, 其作用类似于windows里的DLL, 几乎所用的应用程序都要用到这些共享库
    • /lost+found 一般空, 当系统非法关机后, 这里会存放一些文件
    • [重点]/etc 所有系统管理所需要的配置文件和子目录
    • [重点]/user 用户安装的应用程序和文件放在这里
    • [重点]/boot 启动linux时使用的一些核心文件, 包括一些连接文件和镜像文件
    • /proc /srv /sys 别动的目录
    • /dev device 类似于windows的设备管理器, 把所有的硬件用文件的形式储存
    • [重点]/media linux系统会自动识别一些设备, 例如U盘, 光驱等, 当识别后会被挂载在这个目录下
    • [重点]/mnt 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。
    • /opt 给主机额外安装软件所摆放的目录 默认为空
    • [重点]/user/local 这是另一个给主机额外安装软件所安装的目录, 一般是通过编译源码方式安装的程序
    • [重点]/var 这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件。
    • /selinux SELinux是-种安全子系统,它能控制程序只能访问特定文件。类似于360

Linux基本操作

远程登录Linux

  • 工具: Xshell5 远程登录到linux的软件 命令行操作
  • 远程上传: Xftp6 SFTP服务(22号端口)
  • 需要Linux开启SSHD服务 (22号端口)

vi和vim编辑器

三种常见模式:

image-20200611151021337
  1. 正常模式: 默认模式, 可以使用上下左右移动光标, 删除字符, 快捷键复制粘贴

  2. 编辑模式: 按下i,I,o,O,a,A,r,R等进入

  3. 命令行模式: 完成存盘, 读取, 替换等动作

    • :wq write and quit 保存并退出
    • :q quit 退出不保存
    • :q! 强制退出不保存

常用快捷键:

基本快捷键快捷键作用
yy5yy拷贝当前行下的5行
p 粘贴
dd5dd删除
(命令行下)/[字符串] 查找;
n: next 查找下一个
(命令行下):set nu:set nonu出现/取消行号
Ggg移动到文档最后/开头
u 撤销
shift+g 移动到指定行

开机 重启 登录注销

指令解释
shutdown -h now立即关机
shutdown -h 11分钟后关机
shutdown -r now现在重新启动计算机
halt关机
sync把内存的数据同步到磁盘上
logout注销(这个指令在图形界面无效, 在运行级别3有效)

用户管理

Linux系统是一个多用户多任务的操作系统, 任何一个要使用系统资源的用户, 都必须先向系统管理员申请一个账号, 然后以这个账号的身份进入系统

Linux的用户至少要属于一个组

image-20200611160022682

用户

指令操作
useradd Jack添加用户Jack, 组名同Jack
useradd -d Man Jack添加用户Jack 组:Man
userdel Jack删除用户Jack 不删除组
userdel -r Jack删除用户Jack 同时删除组
passwd Jack给Jack添加密码
id Jack查询用户信息
whoami我是谁

高权限到低权限不需要密码, 用exit再返回到原来的用户

su Lucy
exit

指令操作
groupadd Wudang添加组
groupdel Wudang删除组
useradd -g Wudang haha创建haha并加入Wudang
usermod -g Shaolin haha[这条笔记似乎有问题]创建Shaolin组 将haha移入

相关的几个文件

目录信息
/etc/passwd用户配置文件
/etc/group组配置文件(组名:口令:组标识号:组内用户列表)
/etc/shadow口令配置文件(密码和登录信息, 是加密的)
  • /etc/passwd

    image-20200611164841904

    类别含义
    root用户名
    0用户ID
    0组ID
    root家目录
    /bin/bashshell

实用指令

指定运行级别

运行级别指令作用
0 关机
1 单用户(找回丢失密码)
2 多用户无网络服务
3**(常用)** 多用户有网络服务
4 保留
5**(常用)** 图形界面
6 重启
  • 系统的运行级别配置文件: /etc/inittab

  • 切换运行级别的基本语法:init <number>

  • 如果忘记root密码, 如何找回?: 进入单用户模式, 修改root密码. 因为进入单用户root模式不需要密码. (能进机房的都不是一般人)

man 获得帮助信息

man [command]

help 获得帮助信息

help [command]

文件目录类

类型作用说明
pwd显示当前工作目录的绝对路径
ls [选项] [目录或文件]列出当前目录所有内容信息-a显示隐藏文件
-l列表呈现
cd ..回到上一级
~或空回到家目录
mkdir [选项] [目录]创建目录-p 创建多级目录
rmdir [选项] [要删除的空目录]删除目录如果希望删除非空:
rm -rf []
rm [选项] [要删除的的文件或目录] -r 删除整个
-f 强制删除是不提示
touch 文件名称创建文件可以一次性创建多个文件
cp [选项] 文件复制-r 递归复制整个文件夹
\cp 可以强制覆盖不提示
mv 原来的 现在的移动文件或重命名看是否在一个目录下
cat [选项] 要看的文件以只读的方式查看文件-n 显示行号
| more 按页显示

more指令

操作说明
空格下一页
Enter翻一行
q离开
Ctrl+F向下滚动一屏
Ctrl+B返回上一屏
=输出当前行号
:f输出文件名和当前的行号

less指令

更强大, 对显示大型文件有较高的效率. 并不是一次将整个文件加载完才显示.

操作说明
空格下一页
PageDown下一页
PageUp上一页
/字串向下查找, n下一个, N上一个
?字串向上查找, n下一个, N上一个
q离开

输出重定向和追加指令

>输出重定向 >>追加

示例含义
ls -l > a.txt将列表信息覆盖写入a.txt (如果没有就创建)
ls -l >> a.txt将列表信息追加到a.txt
cat a.txt > b.txt把a中的内容复制到b
echo "hello" >> b.txt把hello 写入b.txt
指令作用说明
echo [选项] [输出内容]输入内容
head [文件]显示文件开头, 默认10行-n 5前5行
tail [文件]显示文件末尾, 默认4行-n 5 后5行
-f 实时追踪所有更新
指令作用说明
ln -s [源文件] [软链接名]创建快捷方式删除: rm -rf 链接
pwd仍是软连接所在目录
history看执行过的历史命令- 10 显示后10条
!178 执行编号为178的指令

时间日期类

指令作用说明
date显示当前的时间date "+%Y %m %d" 输出年月日
date -s设置日期date -s "字符串时间"
cal [选项]以日历方式显示时间cal 2020 显示2020日历

搜索查找类

指令作用说明
find [范围] [指令] [文件名]从指定目录向下递归遍历各子目录,将满足的显示再终端-name a.txt 按名字
-user root 按用户
-size +20K 按大小
find /home -name hello.txt
find /user -user root
find /user -size +20K
find /user -name *.txt	通配符
指令作用说明
locate快速定位文件路径, 需要事先建立数据库

首先要updatedb创建数据库, 然后可以用locate hello.txt查找

指令作用说明
grep指令和管道符号|过滤查找-n 显示行号
-i 忽略大小写

管道符号|: 表示将前一个命令的处理结果输出传递给后面的命令处理

cat hello.txt | grep -n he

压缩和解压类

指令作用说明
gzip [文件名]压缩为gz文件原文件不保留
gunzip [文件名]解压gz文件原文件不保留
指令作用说明
zip [选项] [文件名]项目打包很有用, 原文件保留-r 递归全部
unzip [选项] [文件名] -d 指定目录
zip -r Mypackage.zip /home/
指令作用说明
tar [选项] 名字.tar.gz.tar.gz生成-c 产生tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解压
tar 123.tar.gz -zcvf 1.txt 2.txt
tar -zxvf 123.tar.gz -C /home/ (指定的目录)

Linux组管理和权限管理

组管理

指令作用说明
ls -ahl查看文件所有者和组信息-a 显示隐藏的文件
-l 详细列表模式
-h 大小显示便于查看
chown 用户名 文件名修改文件所有者文件的位置并没有变化
chgrp 组名 文件名修改文件所在组
usermod -g 组名 用户名修改用户所在组

权限详解

-rw-r--r-- 1 root root   300 Jun 12 10:27 123.py
-rw-r--r-- 1 root root   435 Jun 11 16:16 Hello.py
-rw-r--r-- 1 root root 23996 Jun 10 14:51 install.sh
drwxr-xr-x 2 root root  4096 Jun 13 08:25 test1

image-20200614191949336

符号含义说明
d文件类型-:普通文件
d:目录
l:软连接
c:字符设备(键盘, 鼠标)
b:块文件, 硬盘
rwx文件所有者权限r:read
w:write
x:execute执行
r-x组权限
r-x文件其他组的用户的权限
2数目如果是文件:表示硬链接的数
如果是目录,则表示该目录的子目录个数
root文件所有者
root文件所在组
4096文件大小如果是目录,则是4096
否则表示文件大小(字节B)
Jun 13 08:25文件最后修改时间
test1文件名

注意

元件内容叠代物件rwx
档案详细资料data文件资料夹读到文件内容修改文件内容执行文件内容
目录档名可分类抽屉读到档名修改档名进入该目录的权限(key)

(此表源鸟哥的Linux私房菜)

  1. 文件的 [w] 表示可以修改, 但是不代表可以删除; 删除一个文件的前提条件时对该文件所在的目录有写权限.
  2. 目录的 [w] 代表可写, 可以修改目录内创建+删除+重命名目录.
  3. 目录的 [x] 代表可执行, 即可以进入该目录.

rwx的数字表示

r=4, w=2, x=1

权限管理

指令作用说明
chmod修改文件或目录权限+,-,=变更权限
-R:如果是目录,则递归子目录
# u所有者	g所在组	o其他人	a所有人
chmod u=rwx,g=rx,o=x a.txt
chmod o+w a.txt
# 4=w 2=r 1=x
chmod 731 a.txt
指令作用说明
chown newowner file修改文件所有者-R:递归子目录
chgrp newgroup file修改所在组-R:递归子目录

Linux系统管理

任务调度

  • 注意: 要先给x权限
指令作用说明
crontab [选项]定时任务-e:编辑定时任务
-l:查询定时任务
-r:删除定时任务
crontab定时任务
*/1 * * * * Hello World >> /home/Tom/a.txt		#表示每隔一小时执行该指令.
0 7,19 * * 7 	#表示每周日早上和晚上7点执行
项目含义范围
第一个*一小时当中的第几分钟0-59
第二个*一天中的第几个小时0-23
第三个*一月当中的第几天1-31
第四个*一年当中的第几个月1-12
第五个*一周当中的星期几0-7
特殊符号含义
*任何时间
,不连续的时间
-连续的时间范围
*/n每隔多久执行一次

磁盘分区与挂载

image-20200617115517867

Linux硬盘分IDE硬盘和SCSI硬盘, 目前基本是SCSI硬盘

  • 对于IDE硬盘,驱动器标识符是hdx~;对于SCSI硬盘,sdx~;其中'x'是盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),'~'代表分区,前四个分区用数字1-4表示,他们是主分区或拓展分区,5之后为逻辑分区.[我这里看的是vd,和上述不同]
  • 可以用lsblklsblk -f查看分区信息

案例:挂载硬盘

  1. 分区: fdsk /dev/sdb按提示新建分区n,主分区p,分区号1,分区261(默认)

  2. 格式化: mkfs -t ext4 /dev/sdb1

  3. 挂载: mount /dev/sdb1 /home/newdisk 第二个参数是自定挂载目录

    umount取消挂载

  4. 设置自动挂载: vim /etc/fstab/, 在其中编辑; 之后执行mount -a生效

磁盘使用情况查询

df -l
df -lh
指令作用说明
df -lh查询系统整体磁盘使用情况
du /目录查询指定目录-s指定目录占用大小汇总
-h带计量单位
-a含文件
-max-depth=1子目录深度
-c列出明细的同时增加汇总值
wc统计数量grep "^d" 查询文件夹的个数(正则表达式)
ls -l /home | grep "^d" | wc -l #统计文件夹数目
ls -lR /home | grep "^d" | wc -l #递归统计文件夹数目

网络配置

固定IP地址

vim /etc/sysconfig/network-scripts/ifcfg-eth0
  • onboot要打开
  • 如果是虚拟机, DNS和网关要一致
  • 输入service network restart重启服务

Linux进程管理

进程查询

  • 在LINUX中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号。
  • 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器
  • 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
  • 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
指令作用说明
ps收看正在进行的指令-a:显示当前终端的所有进程信息
-u:以用户的格式显示进程信息
-x:显示后台进程运行的参数
字段说明
PID进程识别号
TTY终端机号
TIME此进程消耗CPU时间
CMD正在执行的命令或进程名

image-20200618182942659

USER:用户名称
PID:进程号
%CPU:进程占用cPU的百分比
%MEM:进程占用物理内存的百分比
VSZ:进程占用的虚拟内存大小(单位: KB)
RSS:进程占用的物理内存大小(单位: KB)
TT:终端名称,縮写.
STAT:进程状态,其中s-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,2- 僵死进程,T-被跟踪或者被停止等等
STARTED:进程的启动时间
TIME: CPU时间,即进程使用cPu的总时间
COMMAND:启动进程所用的命令和参数,如果过长会被截断显示

可以用管道符号筛选

ps -aux | grep sshd
指令作用说明
ps -ef查看父进程PPID
pstree 选项更直观看进程信息-p:显示PID
-u:显示所属用户

进程终止

指令作用说明
kill 选项 进程号通过进程号kill进程-9:强制停止
killall 进程名称通过进程名称kill进程,支持通配符

服务管理(service)

服务(service),本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql, sshd防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。

指令: service 服务名 start/stop/restart/reload/status (临时生效)
在CentOS 7.0后, 不再使用service, 而是systemctl

通过telnet指令检测linux的某个端口是否运行并可以访问 [没找到]

收看服务名

方式1: 使用setup -> 系统服务 [CentOS7没有找到]

方式2: /etc/init.d/服务名称

chkconfig

可以给每个服务的各个运行级别设置自启动/关闭

  1. chkconfig --list | grep xx 收看服务 (系统提醒我用systemctl list-unit-files看更多的服务)
  2. chkconfig --level 5 服务名 on/off 后重启
  3. chkconfig 服务名

设置自启动或永久开启

动态进程监控

top命令与ps命令很相似, 但top在执行一段时间会自动更新

指令作用说明
top 选项动态进程监控-u:看某一用户
-k 进程号:杀死进程
-d 时间:刷新秒数

-P:以CPU使用率排序
-M:以内存使用率排序
-N:以PID排序
-q:退出

监控网络状态

指令作用说明
netstat 选项查看系统网络情况-an:按一定顺序排列输出
-p:显示哪个进程在用

Linux RPM和YUM

RPM

RPM: Red Package Manager

指令作用
rpm -qa查询已安装的包
rpm -qa | grep xx查询xx的安装情况
rpm -q firefox查询软件包firefox是否安装
rpm -qi firefox查询软件包信息
rpm -ql firefox查询软件包中文件
rpm -qf /etc/passwd查询/etc/passwd文件所属的软件包
指令作用说明
rpm -e firefox卸载firefox--nodeps:强制删除
rpm -ivh 包全路径名称安装i:安装
v:verbose提示
h:hash进度条

安装步骤

  1. 找rpm包,挂载上系统
  2. 执行指令

YUM

Yum是一个Shel前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所衣依赖的软件包。

需要联网,从网络获取.

指令作用
yum list |grep xx查询
yum install xxx下载安装

默认安装最新版本

0

评论区