Linux 基本知识(目录结构 / VIM / 系统管理 / 文件目录命令 / 用户&用户组 / 文件权限 / 压缩和解压 / 磁盘 / 进程管理 / 定时任务 / 软件包管理)

您所在的位置:网站首页 bundle文件解包 Linux 基本知识(目录结构 / VIM / 系统管理 / 文件目录命令 / 用户&用户组 / 文件权限 / 压缩和解压 / 磁盘 / 进程管理 / 定时任务 / 软件包管理)

Linux 基本知识(目录结构 / VIM / 系统管理 / 文件目录命令 / 用户&用户组 / 文件权限 / 压缩和解压 / 磁盘 / 进程管理 / 定时任务 / 软件包管理)

2023-02-24 14:01| 来源: 网络整理| 查看: 265

Linux 1. Linux 目录结构2. VIM 编辑器2.1 普通模式2.2 命令模式 3. 系统管理4. 文件目录命令5. 用户 用户组5.1 用户管理5.2 用户组管理 6. 文件权限6.1 修改权限 chmod6.2 修改文件的所有者 chown6.3 修改文件的所属组 chgrp 7. 压缩和解压 & 磁盘8. 进程管理9. crontab 定时任务10. 其他命令11. 软件包管理

Linux,全称 GNU/Linux ,是一种免费使用和自由传播的 类 UNIX 操作系统,是一个基于 POSIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议。

1. Linux 目录结构

Linux 系统中有一个重要概念:“一切皆文件”,把一切资源都看作是文件,包括硬件设备,把每个硬件都看成是一个文件,通常称为 设备文件,这样用户就可以用 读写文件的方式实现对硬件的访问。(在 Linux 中,隐藏文件是以 . 开头的)

Linux 文件系统的结构层次鲜明,最顶层是其根目录。

/ │ ├── /root #系统管理员的主目录 │ ├── /home # 所有普通用户的主目录,以用户的用户名命名 │ ├── /boot # 系统启动时使用的一些核心文件 │ ├── /usr # 第三方程序目录 │ ├── /opt # 额外安装软件所摆放的目录 │ ├── /bin # 可执行二进制文件的目录,实际位置为 /usr/bin │ ├── /sbin # 存放系统管理员使用管理命令和程序,实际位置为 /usr/sbin │ ├── /lib # 系统运行使用的函数库目录,实际位置为 /usr/lib │ ├── /etc # 存放系统配置文件 │ ├── /var # 可变文件目录,存放运行时经常改变的文件,例如日志文件等 │ ├── /tmp # 存放各种临时文件 │ ├── /dev # 存放设备文件,将所有硬件用文件的形式存储 │ └── ... 2. VIM 编辑器

普通模式、编辑模式 和 命令模式间的切换

在命令行输入 vim xxx 进入普通模式;普通模式 到 编辑模式 —— i | o,编辑模式 到 普通模式 —— ESC;普通模式 到 命令模式 —— : | /,命令模式 到 普通模式 —— :wq | :q | :q!。 2.1 普通模式 指令功能yy复制当前行Nyy从当前行起,复制 N 行p粘贴Np粘贴 N 次x剪切一个(DEL)dd删除当前行Ndd从当前行起,删除 N 行u撤销gg移动到 首G移动到 尾n + G移动到 第 n 行 2.2 命令模式 进入命令模式:: 和 /退出命令模式:Esc 命令功能:w保存:q退出:!强制执行(q!)/keyWord按照关键字查找,`n:set nu显示行号:set nonu关闭行号:%s/old/new/g将文中的 old 全部替换为 new 3. 系统管理

服务管理 systemctl

进程:一个正在执行的程序或命令。

服务:启动后,一直存在并且常驻内存的进程。

**服务本质就是进程,运行在后台,通常会监听某个端口,等待其它程序的请求,又称为守护进程。**例如:SSHD、防火墙等。

# 基本语法 systemctl start | stop | restart | status 服务名

系统运行级别

Linux中有 7 种运行级别状态(runlevel),常用级别为 3 和 5:

0:系统停机状态;

1:单用户工作状态,root权限,用于系统维护,禁止远程登录;

2:多用户状态,不支持网络服务;

3:完全的多用户状态,支持网络服务,登陆后进入控制台命令行模式(multi-user.target);

4:系统未使用,保留;

5:登陆后进入图形GUI模式(graphical.target);

6:系统重启。

注意:默认运行级别不能设置为 0 和 6,否则不能正常启动。

# 查看当前运行级别 systemctl get-default # 修改当前运行级别(TARGET 取 multi-user 或者 graphical) systemctl set-default TARGET.target

服务的自启动状态

# 查看服务开机自启状态 systemctl list-unit-files | grep 服务名 systemctl is-enabled 服务名 # 开启、关闭服务开机自启 systemctl enable / disable 服务名

关机重启

命令功能sync将数据从内存同步到硬盘中shutdown一分钟后关机shutdown nn 分钟后关机shutdown-c取消关机shutdown now立即关机reboot重启 4. 文件目录命令

pwd ls cd mkdir touch cp rm mv

pwd:显示当前所在位置(绝对路径);ls:列出目录内容; ls -a:列出目录所有内容,包括 . 开头的隐藏文件;ls -l / ll:以长数据串行列出,包含文件的属性与权限等数据;ls -al:-a 和 -l 的组合使用。 cd:切换目录; cd /:返回根目录;cd / cd ~:返回用户的家目录;cd ..:返回上一级目录;cd -:返回上一次所在目录。 mkdir:创建目录; mkdir -p a/b/c/d/e:递归创建目录。 touch:创建一个新的空文件;cp:复制; cp source destination:复制指定文件;cp -r source destination:复制整个文件夹; rm:删除; rm -r:递归删除;rm -f:强制删除且不提示;rm -rf:强制递归删除且不提示。 mv:移动 / 重命名。 mv oldFile newFile:同一个目录下的,是重命名;mv /temp/moveFile /targetFolder:不同目录下的,是移动;

cat more less echo > >>

cat:查看文件内容;

cat -n :显示行号。

more:分页查看文件内容;

Enter:向下翻一行;Space / b:向下/上翻一页;q:退出;=:查看当前行号。与 cat 联合使用:cat -n /etc/profile | more;

less:和 more 类似;less 不是一次将整个文件加载完成后显示,而是根据需要显示的内容加载的,显示大型文件效率较高。

Page Up/Down:向上/下翻一行;Space / b:向下/上翻一页;q:退出;=:查看当前行号。lVIM 中的 gg / G、查找等操作也适用。

echo:输出内容到控制台;

echo $SHELL:查看当前 shell。

>:覆盖;>>:追加。

# echo "Hello~" > info # cat info Hello~ # ls ~ info # ls ~ >> info # cat info Hello~ info

head tail ln history

head / tail:默认情况下显示文件的前/后 10 行内容;

head -n:查看文件前 n 行内容;tail -n:查看文件后 n 行内容;tail -f:实时追踪文件的所有更新。

ln:软连接,也叫符号连接;存放了连接到其他文件的路径,类似 Windows 中的快捷方式;

ln -s 原文件或目录 软连接名:给原文件或目录创建一个软连接;

# pwd /root # ls info # cd /home # ln -s /root/info myInfo # ls myInfo

hisotry:查看已执行过的历史指令;

history:显示所有的历史指令;history -c:清空历史指令;history 10:显示最近执行的10条指令。

管道符号 grep wc

grep [选项] 查找内容 源文件:过滤查找(-n 显示行号;-i 忽略大小写)。

# grep -ni hello hello.txt 1:Hello World 2:hello

|:将前一个命令的处理结果传递给后面的命令处理;

# cat hello.txt | grep -ni HELLO 1:Hello World 2:hello

wc:计算文件的“行数、单词数、字节数”。

# wc hello.txt 9 11 74 HelloWorld.txt # cat hello.txt | grep -ni hello | wc 2 3 25

统计当前目录下的文件个数;

ll | grep "^-" | wc -l

统计当前目录下的目录个数;

ll | grep "^d" | wc -l

统计当前目录下的文件个数,包括子文件夹中的;

ll -R | grep "^-" | wc -l

统计当前目录下的目录个数,包括子目录中的;

ll -R | grep "^d" | wc -l

5. 用户 用户组

/etc/passwd:用户的配置文件;

sun:x:1001:1001::/home/sun1:/bin/bash # 用户名:x:uid:gid::主目录:Shell

/etc/group:组的配置文件。

sun:x:1001: # 组名:x:gid: 5.1 用户管理

查看所有用户:cat /etc/passwd

useradd:添加用户;

useradd -g 组名 用户名:添加用户时为其设置组;

passwd 用户名:修改 / 设置密码;

userdel 用户名:删除用户,保留家目录;userdel -r 用户名:删除用户和家目录;

id 用户名:查询用户信息;

su 用户名:切换用户;

whoami:查看当前用户名;

who am i:显示登录用户的用户名;

usermod -g 组名 用户名:将用户添加到某个组。

# useradd sun1 # useradd -g sun1 sun2 # cat /etc/passwd ... sun1:x:1001:1001::/home/sun1:/bin/bash sun2:x:1002:1001::/home/sun2:/bin/bash # cat /etc/group ... sun1:x:1001: # id sun1 uid=1001(sun1) gid=1001(sun1) groups=1001(sun1) # id sun2 uid=1002(sun2) gid=1001(sun1) cgroups=1001(sun1) # useradd sun3 # usermod -g sun1 sun3 # id sun3 uid=1003(sun3) gid=1001(sun1) groups=1001(sun1) 5.2 用户组管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。创建用户时未为其增加组,会默认增加一个与用户名相同的组,并将该用户放入到该组中。

查看所有组:cat /etc/group

groupadd 组名:新增组;groupdel 组名:删除组;groupmod -n newGroupName oldGroupName:重命名组。 6. 文件权限

**Linux 文件属性:**通过 ll 命令列出目录中的文件,包含文件的属性与权限等数据。

# ll # 类型+权限 用户 用户组 lrwxrwxrwx. 1 root root 7 Mar 7 2019 bin -> usr/bin drwxr-xr-x. 99 root root 12288 Feb 21 21:44 etc -rw-r--r-- 1 root root 0 Feb 21 21:48 hello.txt

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KqJh0E3e-1677054686758)(https://itsawaysu.oss-cn-shanghai.aliyuncs.com/note/Linux%E6%96%87%E4%BB%B6%E5%B1%9E%E6%80%A7.png)]

0,首位表示类型

d:目录;-:文件(纯文本文件 和 二进制文件);l:链接文件(相当于 Windows 的快捷方式);c:字符设备文件,接口设备(例如键盘、鼠标、打印机);b:块设备文件,提供系统存取数据的接口设备(例如硬盘)。

1 - 3 位,属主(该文件的所有者)拥有该文件的权限

4 - 6 位,属组(该文件所有者的同组用户)拥有该文件的权限

7 - 9 位,其他用户拥有该文件的权限

rwx 对于文件

**r:**可读(read),可以打开文件;**w:**可写(write),可编辑文件的内容(增删改仅针对文件内容,而非文件本身,即使拥有权限也无法删除该文件);**x:**可执行(execute),可执行该文件。

rwx 对于目录

**r:**可读(read),可以使用 ls 查看目录内容;**w:**可写(write),可以在该目录下 创建、删除、重命名、移动 文件和目录;**x:**可执行(execute),可以进入该目录,即可以使用 cd 命令进入该目录。 6.1 修改权限 chmod

方式1:+ - = 变更权限:

u:所有者、g:所有组、o:其他人、a:所有人(u、g、o的总和)。

chmod u=rwx 文件/目录名:给文件/目录的 u 赋予 rwx权限;

chmod o+w 文件/目录名:给文件/目录的 o 赋予 w 权限;

chmod a-x 文件/目录名:取消文件/目录的 a 的 x 权限。

方式2:通过数字变更权限:

chmod 751 文件/目录名 相当于 chmod u=rxw,g=rx,o=x 文件/目录名

chmod -R 777 目录:该目录中的所有文件的所有者、所属组、其他用户都具有 rwx 权限(-R 递归)。

--- 000 1 --x 001 2 -w- 010 3 r-- 100 4 r-x 101 5 rw- 110 6 rwx 111 7 6.2 修改文件的所有者 chown

chown newOwner 文件/目录:改变所有者;

# ll -rw-r--r-- 1 root root 0 Feb 21 22:03 hello.txt # chown sun hello.txt # ll -rw-r--r-- 1 sun root 0 Feb 21 22:03 hello.txt

chown newOwner:newGroup 文件/目录:改变文件的所有者和所在组;

chown -R newOwner:newGroup 目录:递归改变文件夹下的所有子文件和子目录的所有者和所在组。

# chown sun:sun hello.txt # ll -rw-r--r-- 1 sun sun 0 Feb 21 22:03 hello.txt 6.3 修改文件的所属组 chgrp chgrp 组名 文件/目录chgrp -R 组名 目录:修改目录下所有的文件和目录的所属组 。 # chgrp root hello.txt # ll -rw-r--r-- 1 sun root 0 Feb 21 22:03 hello.txt 7. 压缩和解压 & 磁盘

压缩和解压

gzip / gunzip

gzip 文件名:压缩文件,只能将文件压缩为 *.gz 文件;gunzip 文件名:解压压缩文件。**注意:**只能压缩文件不能压缩目录 并且 不保留原来的文件。 # touch a b c # gzip a b c # ls a.gz b.gz c.gz # gunzip a.gz b.gz c.gz # ls a b c

zip / unzip

zip [选项] 压缩后的文件名 需要压缩的内容:能够压缩目录 且能够 保留原来的文件。

zip -r:递归压缩,即压缩文件夹;

# mkdir -p a/b/c # touch bb cc # zip -r package.zip a/ bb cc adding: a/ (stored 0%) adding: a/b/ (stored 0%) adding: a/b/c/ (stored 0%) adding: bb (stored 0%) adding: cc (stored 0%) # ls a bb cc package.zip

unzip -d:指定解压后文件的存放目录。

将 package.zip 解压到 /tmp 目录下 # unzip -d /tmp package.zip

tar [选项] XXX.tar.gz 打包的内容:该指令是打包指令,最后的打包文件是 .tar.gz 文件。

-c:打包文件,生成 .tar 文件;

-x:解包;

-v:显示详细信息;

-f:指定压缩后的文件名;

-z:打包的同时压缩,解包的同时解压(调用 gzip)。

# 打包并压缩 # touch 1.txt 2.txt 3.txt # tar -zcvf package.tar.gz *.txt # ls 1.txt 2.txt 3.txt package.tar.gz # 解包并解压到当前目录 # tar -zxvf package.tar.gz # 解包并解压到 /home 目录 # tar -zxvf package.tar.gz -C /home

磁盘情况

**disk usage - du [选项]:**查询文件和目录占用的磁盘空间;

du /目录:查询指定目录的磁盘占用空间;

-s:指定目录占用磁盘的大小汇总;-h:带计量单位;-a:含文件;--max-depth=n:子目录深度为第 n 层。

disk free - df:磁盘空间使用情况;

df -h:带计量单位。

free -h:内存占用情况;

lsblk:查看设备挂载情况。

lsblk -f:查看详细的设备挂载情况,显示文件系统信息。 8. 进程管理

进程:一个正在执行的程序或命令;

服务:启动之后一直存在、常驻的进程。

每一个进程都会分配一个 id,pid 进程号;每个进程都可以以两种方式存在,前台和后台;普通情况下,系统服务都是以后台的形式存在。

process status - 进程状态

ps aux:查看当前系统中正在执行的所有进程;

USER:产生该进程的用户;

PID:进程号;

%CPU:进程占用 CPU 的百分比;

%MEM:进程占用物理内存的百分比;

VSZ:进程占用虚拟内存的大小(KB);

RSS:进程占用实际物理内存的大小(KB);

TTY:终端名称;

STAT:进程的运行状态 (S - 睡眠、R - 正在运行、D - 短期等待、Z - 僵死进程);

START:进程执行的开始时间;

TIME:进程占用CPU的时间;

COMMAND:启动该进程所用的命令和参数。

ps -ef:查看父子进程间的关系。

UID:用户ID;

PID:进程ID;

PPID:父进程ID;

C:CPU用于计算执行优先级的因子。数值大,进程是 CPU 密集型运算,优先级低;数值小,进程是 I/O 密集型运算,优先级高;

STIME:进程启动的时间;

TTY:完整的终端名称;

TIME:进程占用CPU的时间;

CMD:启动该进程所用的命令和参数。

pstree 查看进程树

pstree [选项]:以树状的形式查看进程。

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

kill 终止进程

kill [选项] PID:通过进程号杀死进程; kill -9 PID:强制终止进程。 killall 进程名称:通过进程名杀死进程。

top 实时监控进程状态

top [选项]:动态监控进程状态;

-d:秒数,指定每隔几秒更新,默认为 3 秒;-i:不显示任何闲置或僵死的进程;-p:指定监控进程 ID 来监控某个进程的状态。

top 显示信息:

# 当前时间 系统运行时间 用户书香。 负载值(大于 0.7 为负载过大) top - 01:37:55 up 1 day, 7:38, 1 user, load average: 0.05, 0.06, 0.06 # 任务数量及状态 Tasks: 88 total, 1 running, 86 sleeping, 1 stopped, 0 zombie # CPU 占用情况:us 用户;sy 系统;id 空闲 %Cpu(s): 0.3 us, 0.5 sy, 0.0 ni, 99.0 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 st # 内存占用情况 KiB Mem : 3782864 total, 2682940 free, 186412 used, 913512 buff/cache # swap 分区情况 KiB Swap: 0 total, 0 free, 0 used. 3303340 avail Mem # 用户 优先级 虚拟内存 物理内存 共享内存 进程状态 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

交互操作:

P # 按 CPU 使用率排序,默认使用 M # 按内存的使用率排序 N # 按 PID 排序 q # 退出

netstat 监控网络状态和端口占用信息

netstat -anp | grep 进程号:查看该进程的网络信息;

netstat -nltp | grep 端口号:查看该网络端口的占用情况;

# netstat -anp | grep sshd # netstat -nltp | grep 22 9. crontab 定时任务

crontab [选项]:指定系统在某个时间执行特定的命令或程序。

crontab -l:查询 crontab 任务;

crontab -r:删除当前用户所有的 crontab 任务;

crontab -e:编辑 crontab 定时任务。

进入 crontab 编辑界面,定时任务格式:* * * * * 任务。

占位符:

占位符含义范围第一个 *一小时中的第几分钟0 - 59第二个 *一天中的第几小时0 - 23第三个 *一个月中的第几天1 - 31第四个 *一年中的第几个月1 - 12第五个 *一周中的第几天0 - 7

特殊符号:

特殊符号含义*代表任何时间,比如第一个 * ,代表一个小时中的每分钟都执行一次,代表不连续的时间,比如 0 8,12,16 * * * ,代表在每天的 8:00 12:00 16:00 执行一次-代表连续的时间范围,比如 0 5 * * 1-6 ,代表在周一到周六的凌晨 5:00 执行一次*/n代表间隔多久执行一次,比如 */10 * * * * ,代表每隔10分钟执行一次

例子:

0 5 1,15 * * 每月的1号和15号的凌晨 5:00 执行一次 */10 4 * * * 每天的凌晨 4:00,每隔10分钟执行一次 # 每分钟执行一次 echo "Hello" >> /tmp/hello.txt */1 * * * * echo "Hello" >> /tmp/hello.txt 10. 其他命令

帮助命令

man 命令:获得帮助信息;

help 命令:获得 Shell 内置命令的帮助信息。

时间日期

date:显示当前时间; date +%Y:当前年份;date +%m:当前月份;date +%d:当前本月的哪一天;date +%D:02/21/23date "+%Y-%m-%d %H:%M:%S":按照格式显示年月日时分秒。cdate -d '1 day ago' | date -d '-1 day after':一天前 / 一天后; cal:查看日历; cal 2022 显示2022年的日历。

搜索查找 find locate which

find 搜索范围 选项:从指定目录向下递归遍历,将满足条件的文件或者目录显示在终端,默认从当前目录下搜索。

find 搜索范围 -name :按指定的文件名查找文件;

# find -name *.txt ./hello.txt # find /root -name *.txt /root/hello.txt

find 搜索范围 -size :按指定的文件大小查找文件。(+ 大于;- 小于;= 等于;k/M/G)

# find -size +1G # find -size =100M # find -size -1k

locate 文件:快速定位到文件的路径。利用事先建立的,系统中所有文件名称和路径的 locate 数据库,实现快速定位。无需遍历整个文件系统,查询速度快。执行 locate 之前需要执行 updatedb 指令。因为locate 使用 /var/lib/mlocate/ 这个数据库来进行搜索,存储在内存中,并且每天更新一次,所以无法用 locate 搜索新建的文件,可以使用 updatedb 来立即更新数据库。

which:可以查看某个指令在哪个目录下。

# which cd /usr/bin/cd 11. 软件包管理

RPM

RPM - RedHat Package Manager - RedHat 软件包管理工具

RPM 查询: rpm -qa:查询已安装的 RPM 软件包;rpm -q firefox:查询 firefox 是否已安装;rpm -qi python:查询已经安装的 python 软件包的信息;rpm -ql python:查询已经安装的 python 软件包中的文件。 RPM 卸载: rpm -e firefox:卸载;rpm -e --nodeps firefox :强制卸载。 RPM 安装: rpm -ivh 包全名:安装;rpm -ivh --nodeps RPM 包全名:安装,不考虑依赖关系。

YUM

YUM 基于RPM包管理,能从指定的服务器自动下载 RPM 包并安装,可以自动处理依赖性关系,并一次性安装所有依赖的软件包。YUM 类似 Java 开发中的 Maven,可以从镜像网站上下载应用程序并直接安装。

yum list | grep xxx:查询软件包信息;yum install 软件包名:安装 RPM 软件包;yum update 软件包名:更新 RPM 软件包;yum remove 软件包名:删除 RPM 软件包;yum check-update:检查是否有可用的更新 RPM 软件包;yum clean:清理 YUM 过期的缓存;yum deplist:显示 YUM 软件包所有的依赖关系。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3