【一文学Linux系统基础操作】

文前白话

本文将介绍学习Linux的入门基础知识与操作,文末附有补充的学习Linux的相关资料书籍。

Linux简介:
Linux 是一个免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 性能稳定的网络操作系统
linux的内核最初是由一个芬兰的大学生因为个人兴趣爱好而编写的,这个大学生的名字叫林纳斯·托瓦兹(Linus Torvalds)经过广大程序工作者不断完善,开源集成。目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。其中CentOS是一个企业级的发行版,特别适合对稳定性,可靠性和功能要求较高用户

01、Linux系统的主要目录结构

Linux的根目录为: /
/ 根目录,一般根目录下只存放目录,不要存放文件,也不要修改,或者删除目录下的内容

Linux系统根目录下主要目录有
/bin、/boot、/dev、/etc、/home、/lib、/mnt、/opt、/proc、/root、/sbin、/tmp、/usr、/var、/lost+fount

在这里插入图片描述

具体的主要目录介绍如下

  • /bin:系统中最重要的可执行文件的存放位置,这些可执行文件大都是Linux系统中最常用的命令。如:ls等。
  • /boot存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件和其他一些信息文件。
  • /dev:存放硬件设备的地方(/dev/cdrom)。Linux系统把所有的外设都看成是文件。就是说,用户对代表该外设的文件进行操作实际上就是对该外设进行操作。
  • /etc:系统内部存放配置文件的主要位置,一般与系统关系十分密切的配置文件都放在该目录下。
  • /lib:存放系统的链接库文件。
  • /proc:这个目录中的文件其实不是存放在磁盘上的,是系统内W羧的映像。可以通过查看这些文件来了解系统的运行情
  • /lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下,供查询。
  • /mnt:这是系统提供安装额外文件系统时候的安装目录,如挂载软驱、光驱等。
  • /root:超级用户root的家目录。
  • /home:这是系统默认的Linux系统用户的主目录的根目录
  • /sbin:与/bin一样,主要是存放可执行文件,只不过这里的可执行文件主要是给超级用户管理系统时使用的,普通用户没有权限执行其中的程序,只有root才能执行的程序
  • /tmp:该目录中存放临时文件。
  • /usr:这个目录是Linux系统中占用磁盘空间最大的目录,用户自己的软件都可以放到这儿来。
  • /var:存放经常修改的数据,比如程序运行的日志文件。
  • /media:挂载光盘使用的
  • 挂载光盘:mount /dev/cdrom /media
  • 卸载光盘:umount /dev/cdrom

02、Linux系统常用指令

(1)系统管理

命令 功能说明 举例
ssh 远程安全登录方式 ssh 192.168.***.131
id 查看用户 id root
who 当前在本地系统上的所有用户的信息 whoami ; who
w 查询系统信息 w
hostname 查看主机名 hostname
uname 查询主机信息 uname -a
ping 查看网络是否通畅 ping 192.168.***.131
netstat 查看网络端口的使用情况 netstat -tunlp
安装netstat命令: yum -y install net-tools
查看网络端口的使用情况 -t :显示tcp端口
查看网络端口的使用情况 -u :显示UDP端口
查看网络端口的使用情况 -n :指明拒绝显示别名
查看网络端口的使用情况 -l :指明listen的
查看网络端口的使用情况 -p :指明显示建立相关连接的程序名
ps 显示所有进程信息。 ps 与grep 常用组合用法,查找特定进程 ps -ef l grep nginx
ps -ef I grep nginx
kill 杀死进程 kill -9 top
top 监控Linux系统状况,比如cpu、内存的使用 按住键盘q退出
du 统计大小 du -sh ; du -sh *
firewall-cmd 查看防火墙的状态 firewall-cmd --state
centos 7 关闭防火墙: systemctl stop firewalld.service
echo 判断上一条命令是否正确 echo $?
exit 退出命令

(2)文件管理

命令 功能说明 举例
touch 创建一个新文件 touch 123.txt
mkdir 创建一个新文件夹 mkdir -p /tmp/XD/XD/class
cp 拷贝文件 cp 123.txt class/ ; cp -a 123.txt class/789.txt
mv 移动或者更名现有的文件或目录 mv 123.txt 345.php ;mv 789.txt /home/987.php
rm 删除文件或者目录 rm 987.php ;rm -rf 456.txt
cd 切换目录 cd /usr/local/; cd …;
ls 列出目录内容 ls -ltr ;ls -lrt /home/
pwd 查询所在目录 pwd
cat 查看小文件内容 cat -n 123.txt
more 查看大文件内容 more System.map-3.10.0-123.el7.x86_64
head 查看文件的前面N行 head -20 System.map-3.10.0-123.el7.x86_64
tail 查看文件的后面N行 tail -f access.log ;tail -20 access.log
diff 对比文件差异 diff 123.txt 456.txt
wc 统计行 wc -l 123.txt
grep 查找文件里符合条件的字符串 grep ‘119.4.253.206’ 123.txt
查找文件里符合条件的字符串 -n:输出行数 grep -n ‘80.82.70.187’ 123.txt
查找文件里符合条件的字符串 -w:精确匹配 grep -w ‘113.66.107.198’ 123.txt
查找文件里符合条件的字符串 -i:忽略大小写 grep -i ‘IP:113.66.107.198’ 123.txt
查找文件里符合条件的字符串 -v:反向选择 grep -v ‘113.66.107.198’ 123.txt
find 查询文件 find / -name -type f 123.txt
uniq 对排序好的内容进行统计 uniq -c 123.txt

(3)磁盘管理 & 其他

命令 功能说明 举例
df 文件系统的磁盘使用情况统计 df -h
free 查看系统内存 free -m ; free -h
cal 查看日历 cal 2021
man(ls --help) 查看帮助文档 man ls
help 查看内部命令帮助 help if
clear 清屏 clear ; CTRL + l
echo 标准输出命令 echo “this is echo 命令”

03、vi / vim 编辑器使用

  • vi的基本概念:(三种模式)
  • 命令模式
  • 插入模式
  • 底行模式

进入方式:

  • 进入插入模式:按住键盘的 i 或者 o 或者 a
  • 进入命令模式:按住键盘的左上角esc键
  • 进入底行模式:前提是得在命令模式,输入 : 进入
  • 在命令行模式中的操作:(#后为命令含义)

$ #移动到这一行的行尾
gg #移动到文档第一行行首
G #移动到文档最后一行行首
x #删除内容,删除一个字符
dd #删除游标所在的那一整行
u #复原原来的操作
v #选中范围按y即复制
p #粘贴

  • 在底行模式中的操作:(#后为命令含义)

n #n为数字。光标移动到第n 行
/ #寻找内容
**%s/word1/word2/g #从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2
n1,n2s/word1/word2/g #n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代
为 word2
set nu #显示行号
set nonu #取消行号

  • 文件的保存和退出;

Command 模式是vi或vim的默认模式,如果我们处于其它命令模式时,要通过ESC键切换过来。

当我们按ESC键后,接着再输入:号时,vi会在屏幕的最下方等待我们输入命令;

:w 保存;
:w filename 另存为filename;
:wq! 保存退出;
:wq! filename 注:以filename为文件名保存后退出;
:q! 不保存退出;
:x 应该是保存并退出 ,功能和:wq!相同

04、linux的用户管理与组管理

Linux是一个多用户、多任务的操作系统,linux用户的分类

  • 超级用户root:拥有至高无上的权限 UID:0
  • 普通用户:权限有一定的限制,可以登录系统。一般可以执行/usr/local/bin或者/bin或者/usr/bin或者自己家目录的命令 UID:500 -60000 (centos 6) UID:1000 - 60000(centos7)
  • 系统用户(伪用户):一般不会登录系统,一般情况是用来维持某个服务程序 UID :1-499 (centos 6)、UID :1-1000 (centos 7)
  • 关于用户的相关配置文件
  • 账号信息:/etc/passwd
  • 密码信息:/etc/shadow

test :x :1000 :1000 : :/home/test :/bin/bash
用户 密码占位符 UID GID 用户描述 用户家目录 登录后使用的shell解释

  • /sbin/nologin #是不可登录的
  • /bin/bash #可以登录
  • 添加用户指令:

-u #指定用户UID
-d #指定用户主目录
-g #指定用户所属组
-r #指定用户是系统用户
-s #用户登录shell解释器
-M #不创建主目录

  • eg:创建一个用户XD,指定UID为1010,指定家目录为/home/XD ,指定所属组为root组,指定登录shell为/bin/bash
useradd -u 1010 -d /home/XD -g root -s /bin/bash XD
  • 登录用户时出现以下信息如何解决:

如下:
bash-4.2$
bash-4.2$

解决:复制相关信息到家目录

cp -r /etc/skel/.bash* /home/XD/
  • 删除用户命令:userdel
  • -r #连同家目录一块删除

添加用户组命令:groupadd
删除用户组命令:groupdel

  • 修改用户的信息命令:usermod

-u #指定用户UID
-d #指定用户主目录
-g #指定用户所属组

  • 设置用户密码命令passwd
passwd XD
echo "123456" | passwd --stdin XD

05、linux必备核心知识之文件属性与权限操作

  • 文件的属性:

135088935 -rw-------. 1 root root 1778 Oct 1 2020 yum.log

135088935 - rw------- 1 root root 1778 Oct 1 2020 yum.log
第一列 第二列 第三列 第四列 第五列 第六列 第七列 第八列 第九列
  • 第一列:i 节点;i节点可以理解文件id,一个i节点号可以对应多个文件,一个文件只能对应一个i节点号
  • 第二列:文件的类型与权限
    “ - ” #代表的是文件;d #代表是目录; l #软链接文件 ;b #代表块设备;c #代表的是硬件设备(键盘)
    r:表示读权限 ;w:表示写权限;x:表示执行权限
    4:表示读权限 ;2:表示写权限;1:表示执行权限

    rw-------:分为三列 rw- — ---,第一列为所属者的权限,第二列为所属组的权限,第三列:为其它的权限
  • 第三列:有多少文件名链接到这个节点
  • 第四列:文件的所有者
  • 第五列:文件的所有组
  • 第六列:容量大小,单位默认为B
  • 第八列:创建或最近修改的时间
  • 第九列:文件名
  • 修改文件夹的权限命令chmod:
  • chmod 用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

若一个文件夹右上角有锁住的标识,文件夹地址为 : /home/wupk/cd
修改文件权限为777,则在终端输入:

chmod  777  /home/wupk/cd

文件夹的权限就变为了777。

  • 关于权限777的含义理解:
第一位 第二位 第三位
7 7 7
设置文件所有者访问权限 设置群组访问权限 设置其他人访问权限

r:表示读权限 ;w:表示写权限;x:表示可执行权限
4:表示读权限 ;2:表示写权限;1:表示可执行权限

  • 单独一位上的权限
  • 文件所有者访问权限为7时,7用“rwx”表示 {4®+2(w)+1(x)=7}:
  • 设置群组访问权限数值为6,则用“rw-”表示 {4®+2(w)+0(x)=6;
  • 设定其他用户的访问权限为 “r–”,则数值为4+0+0=4
    理解:将rwx看成二进制数,如果有则用1表示,没有则有0表示那么rwx则可以表示成为:111 ,而二进制的111就是7。
  • 示例:
权限 对应的数值 终端命令 权限含义
rwx rw- r– 764 chmod 764 test.txt
rw- r– r– 644 chmod 644 test.txt 即设定文件 test.txt 的属性为:-rw-r–r--文件属主(u)拥有读、写权限与文件属主同组人用户(g) 拥有读权限其他人(o) 拥有读权限
r- r- r- 444
  • 使用字母设定权限时候:
  • u 表示“用户(user)”,即文件或目录的所有者。
    g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
    o 表示“其他(others)用户”。
    a 表示“所有(all)用户”。它是系统默认值
  • 文件权限操作对象可是上述中的任一个或者它们的组合,操作符号有:
  • + 添加某个权限。
  • - 取消某个权限。
  • = 赋予给定权限并取消其他所有权限(如果有的话)。
  • eg1:
chmod a+x nice.txt 

文件所有者、文件所有者的同组用户 以及其他用户 都增加执行权限

  • eg2:
chmod ug+w,o-x nice.txt

文件所有者、文件所有者的同组用户增加写权限、其他用户删除执行权限

  • 修改文件的权限命令chmod:

-R #递归的意思

chmod -R 777 /home/XD/*
  • eg:

chmod u+x,g+w,o+w boot.log
chmod u-x,g-w,o-w boot.log
chmod 777 boot.log

  • 修改文件的所有者跟所属组命令chown:
  • R #递归的意思

eg:更改文件目录XD 的所属者为root用户 跟 所属组为XD组

chown -R root:XD XD

06、linux 的文件归档与解压缩详细介绍

  • 介绍如何对文件进行归档压缩
  • 文件归档:

文件归档也称之为打包,指的是一个文件或者多个文件或者目录的一个集合,这个集合储存在一个文件中。归档文件是没有进行压缩的,所以占用的空间是所有文件或者目录的总和。工作中经常与压缩结合在一起使用

  • 文件压缩:节约磁盘空间,加快文件的传输速率
  • 解压缩命令:gzip;xz
  • gzip:

不能压缩目录,只能压缩文件,压缩速度最快,但是压缩比例比较低。扩展名:.gz

不保留源文件压缩:gzip 123.txt
保留源文件压缩:gzip -c 345.txt > 345.txt.gz
不保留源文件的解压:gunzip 123.txt.gz
保留原文件的解压:gunzip -c 345.txt.gz > 234.txt
不保留源文件解压:gzip -d 345.txt.gz

  • xz :

可以压缩目录和文件压缩的速度比较慢,但是压缩比例最高。扩展名:.xz

不保留源文件压缩:xz 123.txt
保留源文件压缩:xz -c 345.txt > 345.txt.xz
不保留源文件的解压:unxz 345.txt.xz
保留原文件的解压:xz -d -k 123.txt.xz
不保留源文件解压:xz -d 123.txt.xz

  • 归档与压缩命令tar:

-c #创建新文件
-f #指定文件格式
-v #显示详细过程
eg:tar -cf vmware.tar vmware-tools-distrib;tar -cvf vmware-tools.tar vmware-tools-distrib
-z #以gzip方式归档压缩 eg:tar -zcvf vmware-tools.tar.gz vmware-tools-distrib
-J #以xz方式进行归档压缩 eg:tar -Jcvf vmware-tools.tar.xz vmware-tools-distrib;tar -Jcvf
/home/XD/vmware-tools.tar.xz vmware-tools-distrib
-v #解档解压操作 tar -xf vmware-tools.tar.xz
-C #指定解压路径

07、linux进程管理命令之ps -ef与ps aux详解

  • 实际工作中ps命令的参数作用

[root@localhost ~]# ps -ef | more
UID PID PPID C STIME TTY TIME CMD
root 2 0 0 Jul30 ? 00:00:00 [kthreadd]
root 3 2 0 Jul30 ? 00:00:06 [ksoftirqd/0]
root 5 2 0 Jul30 ? 00:00:00 [kworker/0:0H]
root 7 2 0 Jul30 ? 00:00:04 [migration/0]
root 8 2 0 Jul30 ? 00:00:00 [rcu_bh]
root 9 2 0 Jul30 ? 00:00:00 [rcuob/0]
root 10 2 0 Jul30 ? 00:00:00 [rcuob/1]

UID:用户ID
PID:进程ID
PPID:父进程号
C:CPU的占用率
STIME:进程的启动时间
TTY:TTY终端
TIME:进程执行起到现在总的CPU占用时间
CMD:启动这个进程的命令

[root@localhost ~]# ps aux | more
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2 0.0 0.0 0 0 ? S Jul30 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Jul30 0:06 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< Jul30 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S Jul30 0:04 [migration/0]
root 8 0.0 0.0 0 0 ? S Jul30 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S Jul30 0:00 [rcuob/0]
root 10 0.0 0.0 0 0 ? S Jul30 0:00 [rcuob/1]
root 11 0.0 0.0 0 0 ? S Jul30 0:00 [rcuob/2]

USER:哪个用户启动了这个命令
PID:进程的ID
%CPU:CPU的占用率
%MEM:内存的使用率
VSZ:如果一个程序完全驻留在内存中一共需要使用多少内存空间
RSS:进程当前占用了多少内存
TTY:tty终端
STAT:表示当前进程的状态(S#处于休眠的状态;D#不可中断的状态 ;Z#僵尸进程 ;X#死掉的进程)
START:启动这个命令的时间点
TIME:进程执行起到现在总的CPU占用时间
COMMAND:启动这个进程的命令

08、Linux下常用安装服务软件yum方式的介绍

  • 简介:介绍rpm软件包的管理

  • rpm安装:安装别人编译好的软件包,rpm即Redhat Package Manager,是Redhat的软件包管理方式

  • rpm安装优点:

  • 软件已经编译打包,所以传输和安装方便,让用户免除编译
  • 在安装之前,会先检查系统的磁盘、操作系统版本等,避免错误安装
  • rpm安装缺点:
  • 软件包安装的环境必须与打包时的环境一致或相当
  • 必须安装了软件的依赖包
  • RPM包的命名规则:
  • which-2.20-7.el7.x86_64.rpm
    which #代表的是软件名称
    2.20 #代表的是软件版本号;
    7 #代表的是发布版本号,指的是这个rpm软件包是第几次编译生成的
    el7 #代表的是企业版的7操作系统
    X86 #代表的是CPU架构
    64 #代表的是系统的位数
  • 安装rpm软件包:

-i #install 安装软件包
-v #输出更多的详情信息
-h #输出哈希标记(#)
–nodeps #不验证软件的依赖

  • eg:
rpm -ivh zsh-5.0.2-7.el7.x86_64.rpm
rpm -ivh mariadb-server-5.5.35-3.el7.x86_64.rpm --nodeps
  • rpm包下载地址:
http://rpmfind.net/
http://rpm.pbone.net/
http://www.rpmseek.com/index.html
  • rpm 查询功能:rpm -q
  • -a #查询所有已安装的软件包 rpm -qa zsh
    -f #查询文件所属软件包 rpm -qf /usr/bin/zsh
    -p #查询软件包
    -i #显示软件包信息
    -l #显示软件包中的文件列表
    -d #显示被标注为文档的文件列表
    -c #显示被标注为配置文件的文件列表
  • rpm 包升级:

-U #升级rpm软件服务
eg: rpm -Uvh zsh-5.0.2-7.el7.x86_64.rpm

  • rpm 包卸载:

-e #卸载
eg: rpm -e zsh

09、Linux下常用安装服务软件yum方式

yum软件包的管理并配置本地yum源

  • yum安装:基于 C/S 架构,yum安装称之为傻瓜式安装
  • yum安装优点:方便快捷,不用考虑包依赖,自动下载软件包。
  • yum安装缺点:人为无法干预,无法设定想要的参数
  • 配置本地yum源:

配置文件的路径:/etc/yum.repos.d/

  • [Centos7-yum] #yum源名称,唯一的,用来区分不同的 yum 源
    name=Centos7-source #对yum源描述信息
    baseurl=file:///mnt #yum源的路径(repodata目录所在的目录)
    enabled=1 #表示启用 yum 源
    gpgcheck=0 #为1表示使用公钥检验 rpm 的正确
  • yum安装方式的使用:
  • yum repolist #查看yum源列表
    yum clean all #清空之前yum缓存
    yum makecache #创建yum缓存,为后续安装更加快速
    yum -y install #安装软件 yum -y install zsh
    yum info zsh #查看zsh软件包信息(不管安装了没都会有信息)
    yum info installed zsh #查看已经安装好的软件信息
    yum -remove zsh #卸载软件
    yum search gcc #搜索gcc软件
    yum update #升级软件

10、Linux下常用安装服务软件源码编译安装方式的介绍

  • 源码编译安装软件包的管理
  • 源码安装优点:编译安装过程,可以设定参数,指定安装目录,按照需求进行安装,指定安装的版本,灵活性比较大。

  • 源码安装的缺点:需要对依赖包一个一个的进行安装,不敢随便升级,一升级可能会由于依赖包的是不能使用导致一系列连锁反应。

  • 源码编译安装软件包4大步骤:

  • 1.解压源码包
    tar -xf 源码包
  • 2.配置
    进入解压后的目录,用./configure命令来配置相关信息
    (比如指定安装目录 --prefix=/usr/local/nginx)和生成Makefile文件
  • 3.编译
    make -j4
  • 4.安装
    make install

11、linux下的shell脚本编程

  • 介绍shell脚本的重要性与应用场景
  • shell 简介:
  • Shell是一种脚本语言,又是一种命令语言。可以通俗一点来讲,Shell脚本就是一系列命令的集合,可以在Unix/linux上面直接使用,并且直接调用大量系统内部的功能来解释执行程序把一些重复性工作交给shell做,来实现自动化运维。Shell 虽然没有C/C++、Java、Python等强大,但也支持了基本的编程元素。例如:if、for、while、case等循环,还有变量、数组、字符串、注释、加减乘除逻辑运算等
  • 常见的脚本语言:
  • shell、perl、php、python
  • shell的优点:
  • 易用 #直接在linux系统上使用,不需要编译
    高效 #程序开发的效率非常高,依赖于功能强大的命令可以迅速地完成开发任务
    简单 #语法和结构比较简单,易于掌握
  • shell应用场景:
  • 监控linux系统的健康度
  • 数据的处理 #日志的切割、分析、统计等
  • 与数据库交互 #对数据库进行增,删,改,查等操作
  • 监控进程,自动化启停服务
  • 完成一些重复性的工作
  • shell编写第一个脚本:

① 编写:vi first.sh

# !/bin/bash
# 作者:******
# 编写时间:*******
# 功能:this is my first shell !

echo "this is my first shell !"

② 执行


sh first.sh

chmod 755 first.sh
./first.sh

补充:

如何在windows下连接linux服务器 与文件的传输

MobaXterm安装过程(在windows下连接linux服务器).
WinSCP下载安装及使用教程(实现Windows和Linux两个操作系统下的文件互传).
https://blog.csdn.net/Kefenggewu_/article/details/119083758.

部分基础快捷键使用

ctrl +alt +t 打开终端窗口
ctrl + shift + t 打开并列的终端窗口

ctrl + shift + = 放大终端窗口的字体显示
ctrl + - 缩小终端窗口的字体显示

善用tab键可以是补全文件名或者路径以及显示文件夹下包含的所有文件

  • Ctrl+C:在终端下,结束当前终端执行的程序。
  • 终端中的复制/粘贴:
    Shift+Ctrl+C:复制
    Shift+Ctrl+V:粘贴

附:Linux 相关学习资料

链接:https://pan.baidu.com/s/1obDnNnyVP0tct8LtzJLi0w
提取码:xntf

在这里插入图片描述

**

おすすめ

転載: blog.csdn.net/Kefenggewu_/article/details/121707096