当前位置: 首页 > news >正文

三十分钟学会Linux的基本操作

GNU/Linux

GNU项目是由Richard Stallman发起的自由软件运动,旨在创建一个完全自由的操作系统。虽然GNU项目已经开发了大量的系统组件和工具,但它一直缺少一个完整的操作系统内核。在这时Linus Torvalds开发了Linux内核,并将其发布为自由软件。后来,Linux内核与GNU项目提供的系统组件和工具相结合,形成了完整的操作系统,通常被称为GNU/Linux系统。

因此,尽管Linux内核是操作系统的核心部分,但是在形成完整的操作系统时,GNU项目提供了大量的系统组件和工具,如GNU C库(glibc)、Shell工具(Bash)、编译器工具链(GCC)等,这些组件与Linux内核相结合,构成了现代GNU/Linux操作系统。因此,人们通常会将Linux操作系统称为GNU/Linux系统,以体现GNU项目对整个操作系统的贡献。

Linux 命令在线查询:https://www.linuxcool.com/

1. 各类Linux操作系统如何选择?

企业级应用:RHEL/CentOS
桌面平台:Ubuntu
开源服务器:CentOS

1.1 RedHart

1.1.1RHEL

RHEL是指Red Hat Enterprise Linux,是由Red Hat公司开发和维护的一款商业Linux操作系统。它是基于社区版的Fedora操作系统,并通过添加商业支持、管理工具、安全性和稳定性方面的增强来满足企业级用户的需求。RHEL的主要特点包括:

  1. 商业支持:Red Hat公司提供了长期的技术支持服务,包括补丁、更新、安全性维护、技术支持等。
  2. 管理工具:RHEL提供了一系列的管理工具,包括红帽管理界面(Red Hat Management Interface)、红帽订阅管理器(Red Hat Subscription Manager)等,方便管理员对系统进行管理和监控。
  3. 安全性:RHEL具有较高的安全性,包括SELinux安全增强、加密文件系统等功能。
  4. 稳定性:RHEL在发布前经过多次测试,具有较高的稳定性和可靠性,保证了企业级用户的生产环境的稳定性和可用性。

RHEL被广泛应用于企业服务器、虚拟化、云计算、嵌入式系统等领域,在金融、医疗、科学研究等行业中得到了广泛的应用。RHEL也是OpenShift等Red Hat公司的其他产品的基础操作系统。同时,作为商业Linux操作系统,RHEL也需要购买许可证才能使用。

1.1.1CentOS

​ CentOS是一种开源的Linux操作系统,它是以Red Hat Enterprise Linux (RHEL)为基础的一个克隆版本。CentOS的全称是Community Enterprise Operating System,它由社区开发和维护,目标是提供一个稳定、可靠的企业级操作系统,同时保持与RHEL高度兼容。

CentOS的主要特点包括:

  1. 免费开源:CentOS是一个免费的开源操作系统,可以免费下载、使用和分发。它遵循GNU通用公共许可证(GPL)和其他开源许可证。
  2. RHEL兼容性:CentOS与RHEL非常相似,它直接从RHEL的源代码构建而来,并保持与RHEL高度兼容。这意味着CentOS用户可以享受到类似于RHEL的特性和软件包选择。
  3. 长期支持:CentOS提供长期支持(Long Term Support),在发布后会提供多年的安全更新和错误修复,这使得CentOS成为许多企业和组织的首选操作系统之一。
  4. 社区驱动:CentOS的开发和维护由全球的志愿者社区进行,他们致力于提供一个稳定可靠的操作系统,并积极参与错误修复、安全补丁和功能改进等工作。

CentOS被广泛应用于企业服务器、Web服务器、数据库服务器等各种应用场景。它提供了广泛的软件包选择,包括常用的服务器软件、开发工具、数据库系统等,可以满足不同用户的需求。同时,CentOS也是许多云计算平台、虚拟化环境和容器平台的首选操作系统之一。

1.1Debain

1.1.1Debain

Debian是一种广泛使用的自由操作系统,它以稳定性、安全性和开放性著称。Debian由社区开发和维护,它的目标是提供一个完全自由的操作系统,同时支持多种硬件体系结构,并提供广泛的软件包选择。

Debian的主要特点包括:

  1. 自由开源:Debian是一个自由开源的操作系统,遵循GNU通用公共许可证(GPL)和其他自由软件许可证。
  2. 稳定性:Debian以稳定性著称,它采用了严格的发布策略,每个版本会经过多轮测试和改进,确保系统的稳定性和可靠性。
  3. 安全性:Debian具有良好的安全性,它提供了包括SELinux、AppArmor等在内的多个安全增强功能。
  4. 多种硬件支持:Debian支持多种硬件体系结构,包括x86、ARM、PowerPC、MIPS等,用户可以在不同的硬件平台上运行Debian。
  5. 广泛的软件包选择:Debian的软件包管理系统APT(Advanced Package Tool)可以方便地获取和安装数以万计的软件包,覆盖了各种应用场景,包括Web服务器、数据库、桌面环境、开发工具等。

Debian被广泛应用于各种场景,包括桌面系统、服务器、嵌入式系统等。它还是Ubuntu、SteamOS等其他Linux操作系统的基础操作系统。由于其稳定性和安全性,Debian也被许多企业和组织选择作为他们的首选操作系统。

1.1.1Ubuntu

Ubuntu是一种广泛使用的自由Linux操作系统,它以易用性、稳定性和社区支持著称。Ubuntu由Canonical公司开发和维护,它的目标是提供一个易于安装、易于使用、易于维护的Linux操作系统。

Ubuntu的主要特点包括:

  1. 易用性:Ubuntu采用了友好的图形界面,使得用户可以方便地进行系统设置、软件安装等操作,即使对于初学者也很容易上手。
  2. 稳定性:Ubuntu以稳定性著称,它经过多轮测试和改进,确保系统的稳定性和可靠性。同时,Ubuntu还提供了长期支持(LTS)版本,为企业和组织提供更长时间的支持。
  3. 社区支持:Ubuntu有一个强大的社区,包括开发者、用户和爱好者,他们提供了广泛的技术支持、文档和软件包选择。
  4. 广泛的软件包选择:Ubuntu的软件包管理系统APT(Advanced Package Tool)可以方便地获取和安装数以万计的软件包,覆盖了各种应用场景,包括Web服务器、数据库、桌面环境、开发工具等。
  5. 安全性:Ubuntu具有良好的安全性,它提供了包括AppArmor、SELinux等在内的多个安全增强功能,可以帮助用户保护系统免受安全威胁。

Ubuntu被广泛应用于桌面系统、服务器、云计算平台等各种场景。它还是许多其他Linux发行版的基础操作系统,包括Linux Mint、Kubuntu等。由于其易用性和广泛的软件包选择,Ubuntu也受到了许多普通用户和开发者的喜爱。

2. 虚拟机相关

2.1 配置网络

以后内容我们都将使用CentOS为例。

我们可以使用vi/vim编译器修改相关文件来修改网络配置

vi /etc/sysconfig/network-scripts/ifcfg-ens33

进入文件后,i进入编辑模式

修改BOOTPROTOT=dhcpBOOTPROTOT=static,删除UUID一整行,将NOBOOT=no修改NOBOOT=yes

随后在文件末尾添加:

IPADDR=自己的子网IP
NETMASK=子网掩码
GATEWAY=自己的网关
DNS1=自己的网关
DNS2=114.114.114.114 (中国的服务器)
DNS3=8.8.8.8 (谷歌全球的)

如果不知道自己虚拟机的相关信息,可以通过点击 编辑–>虚拟网络编辑器,进行查看,自己的子网IP最后一位通常选择10到250之间,网关最后一位通常为2,因为1已经被自己的计算机占用了。

修改完成后,Esc退出编译模式,:wq保存退出。

最后重启网络:systemctl restart network,可以通过ping baidu.com 命令进行检测网络是否配置成功。

关闭虚拟机 shutdown -h now

2.2 修改主机名

vi /etc/hostname

进入文件后,i进入编辑模式

把主机名改为自己需要的名字即可

3. Linux的文件系统

3.1 万事万物皆文件

​ 文件系统:操作系统如何管理文件,内部定义了一些规则或者定义。在Linux中所有的东西都是以文件的方式进行操作的,Linux的文件访问与Window不同,Window通过盘符进行访问,Linux维护这一个树状结构的文件模型,只有 /一个根节点,一个节点上可以有多个子节点。

​ 在Linux中查找文件的方式有:

  • 相对路径
    • 以当前路径为基准点,查找其他资源
  • 绝对路径
    • 以根目录为基准点,查找其他资源

3.2 Linux二级文件目录

在这里插入图片描述

  • /:Linux文件系统的根目录。
  • /bin:普通用户和管理员都能运行的文件。软链接:/usr/bin。
  • /boot:引导分区。
  • /dev /media /mnt:第三方挂载目录。
  • /etc:Linux操作系统配置文件所在地。
  • /home:普通用户的家目录。
  • /lib /lib64:Linux操作系统所需的系统资源。软链接:/usr/lib、/usr/lib64。
  • /opt:类似Windows系统的非系统盘。
  • /proc:Linux操作系统内存相关的文件。
  • /root:超级管理员root的家。
  • /run:Linux操作系统进程相关的文件。
  • /sbin:管理员才能运行的命令文件。软链接:/usr/sbin
  • /srv:类似Windows系统的非系统盘。
  • /sys:Linux操作系统的相关文件。
  • /temp:临时目录,每次服务器重启会自动清空。
  • /usr:类似Windows系统的系统盘。
  • /var:动态数据文件,例如日志数据库文件。

3.3 Linux的文件操作

  • cd:改变当前工作目录
    • -P : 如果是软链接进入真实的位置
    • -:快速切换到上一次的目录。
  • ls/ll:显示出指定目录下所有的文件,ll是详细信息。
  • mkdir:创建文件目录
  • rmdir:删除空文件,可以安全的删除文件目录
  • cp:拷贝文件或者文件目录
    • cp 源文件 目标目录
    • 拷贝文件夹
    • -r:递归拷贝文件夹
  • mv:移动文件或文件夹,重命名,文件夹有子目录也可以移动。
  • rm:删除文件。
    • -r:递归删除文件夹,但是删除一次要输入一次y
    • -rf:直接递归删除文件夹。
  • stat:查看文件状态。
    • Inode:文件的唯一标识,类似ID
  • touch:创建文件,如果文件存在则修改文件的三个时间。
  • ln:建立链接,默认是硬链接。
    • -s:建立软链接。
    • 硬链接:给一个文件的inode分配多个文件名,通过任何一个文件名都可以找到次文件的inode,从而读取该文件的信息。
    • 软链接:类似于Windows系统中给文件创建快捷方式,即产生一个特殊的文件,该文件用来指向另一个文件,可用于目录。

3.4 读取文件信息

  • cat:将整个文档加载到内存中,并进行一次性显示。
  • tac:cat倒过来显示。
  • more:可以通过滑动的形式查看文档,但是不支持后退。
    • 按q退出。
  • less:可以通过滑动的形式查看文档,支持后退。
    • 按q退出。
  • head:查看默认头十行内容。
    • -数字:看头几行
  • tail:查看默认后十行内容。
    • -数字:看后几行
    • 利用管道只读取第A行:head -A profile | tail -1
    • -f:根据inode监听文件
    • -F:根据文件名监听文件
  • find:查找文件
  • basename:快速拿到文件名
  • dirname:快速拿到目录名

3.5 VI与VIM编辑器

在这里插入图片描述

  • 命令模式
    • 相关命令
      • ZZ:保存并退出
      • ZQ:不保存退出
      • gg:到文件的第一行
      • G:到文件的最后一行
      • shift+6:行首
      • shift+4:行尾
      • dd:删除,数字dd删除光标后数字行
      • u:回退
      • ctri+r:撤销回退
      • yy:复制
      • p:粘贴到下一行
      • x:剪掉一个字符
      • r:替换
    • 进入编辑模式
      • i:在光标所在的位置插入
      • a:在光标后追加
      • o:下一行
      • O:上一行
    • 进入底行模式
      • 通过 :或者 / 进入
  • 编辑模式
    • 进入命令模式
    • Esc
  • 底行模式
    • :set nu :显示行号
    • :set nonu :关闭行号
    • :set ff :关闭行号
    • /:查找
    • :w:保存
    • :q:退出
    • :wq:保存退出
    • :!q:强制不保存退出
    • :数字:跳到第数字行

VIM的优点:

  • 内容高亮
  • 内容修复
  • 记住浏览历史
  • yum -y install vim

3.6 计算机间的数据传输

3.6.1 ssh

因为Linux操作系统有sshd服务所以可以进行计算机间的数据传输。

  • ssh用户@主机
    • 支持文件传输

执行流程:

  • ssh用户@主机
    • 询问是否信任对方
    • yes
    • 在对方家目录下 .ssh/known_hosts存:主机名,IP 加密密文
3.6.2Window - Linux
  • lrzsz
    • 需要手动安装:yum -y install lrzsz
    • rz:将文件从window上传到Linux
    • sz 文件:将文件从Linux传输到Window
    • 安装完 lrzsz 插件以后,还支持使用鼠标拖拽文件至 Xshell 的方式来上传文件
  • xftp
    • 较为通用的文件传输方式
3.6.3 Linux - Linux
  • scp 源头 目的地 无脑覆盖,文件传输

    • scp 原头是自己 目的地是对方
      • scp -Crp -l 1 test/ root@192.168.88.100:~
      • -C (大写):允许传输过程中压缩,可提高效率
      • -r :递归传输整个目录(如果传输的是文件则不需要这个参数)
      • -p (小写):保留源文件的修改时间和访问权限等
      • -P (大写):指定远程主机的 ssh 端口
      • -l :limit 限制传输带宽 KB/s, -l 1 表示限制每秒 1kb 的传输效率
      • -v :详细模式,打印有关其进度的调试消息的选项,这有助于调试连接、身份验证和配置问题(调试可以使用)
    • scp 原头是对方 目的地是自己
      • scp root@192.168.88.100:/etc/profile ~
  • rsync 源头 目的地 比较覆盖

    • 常用选项:

      • -r :递归传输目录下所有文件
      • -a :归档模式,保持所有文件属性。递归同步并保留符号链接、组、所有者和权限,它比 -r 更常用
      • -v :显示 rsync 过程的详细信息, -vvvv 可以获取更加详细的信息
      • -z :传输时进行压缩处理
      • -exclude=PATTERN :排除不需要传输的文件格式
      • -exclude-from=FILE :排除 FILE 中指定格式的文件
      • -bwlimit :限制 I/O 带宽 KB/s
      • –partial :恢复因某些原因而中断的传输
      • –progress :显示传输进度
      • -P (大写):由两个参数组成。 --partial :恢复某些原因而中断的传输, --progress :显示传输进度
      • –delete :从目标目录中删除无关文件。例如某一端删除了某些文件,使用该参数后另一端对应的文件也会被删除
    • rsync用于通过远程 Shell 在两个位置之间同步文件,它通传输源和目标之间的差异来提供更快的文件传输。

    • rsunc 原头是自己 目的地是对方

      • A端的/test目录拷贝到B端的目录,B端目录下不会出现test目录,而是把A端的/test目录下的所有文件拷贝到B端的~目录
      • rsync -az --exclude 'log' --bwlimit=1 test/ root@192.168.88.100:~
    • rsync 原头是对方 目的地是自己

    • rsync root@node01:/opt/HelloWorld.java /srv

在这里插入图片描述

3.7 文件大小

  • df -h :查看分区信息
  • du -h --max-depth=1:查看指定目录大小
  • free -h :查看内存使用
  • ps -ef:查看进程

3.8 文件压缩

3.8.1 tar
  • 主要针对的文件是 lucky.tar.gz
  • 解压缩
    • tar -zx(解压)v(过程)f(文件) lucky.tar.gz
  • 压缩
    • tar -zc(压缩)f(文件) tomcat.tar.gz(压缩后的名字) apache-tomcat-7.0.61(源文件)
    • tar -zxf tomcat.tar.gz -C /opt/
    • -C 指定解压缩的文件目录
3.8.2 zip和unzip
  • 安装
    • yum install zip unzip -y
  • 压缩
    • zip -r tomcat.zip apache-tomcat-7.0.61
  • 解压缩
    • unzip tomcat.zip

4.Linux的网络信息

4.1 网络相关命令

  • ifconfig
    • 查看当前网卡的配置信息
    • 这个命令属于 net-tools中的一个命令,但是Centos7中minimal版并没有集成这个包,所以7的时候需要自己手动安装
    • 如果没有ifconfig ,可以使用ip addr 临时代替
  • netstat
    • 查看当前网络的状态信息
    • 一个机器默认有65536个端口号[0,65535]
    • 这是一个逻辑的概念,将来我们需要使用程序监听指定的端口,等待别人的访问
    • 一个端口只能被一个程序所监听, 端口已经被占用
    • netstat -anp
    • netstat -r 核心路由表 == route
  • ping
    • 查看与目标IP地址是否能够连通
  • telnet
    • 查看与目标IP的指定端口是否能够连通
    • yum install telnet -y
    • telnet 192.168.31.44 22
  • curl
    • restful 我们所有的资源在网络上中都有唯一的定位
    • 那么我们可以通过这个唯一定位标识指定的资源

4.2 主机间的相互免秘钥

4.2.1 加密算法
  • 散列算法:不可逆
    • MD5
    • SHA
    • 常用于:
      • 文件完整性校验
      • 虚拟货币校验
      • 账户密码加密
  • 对称算法:可以通过秘钥解密
    • 通过秘钥进行加密解密
    • 但是可能不安全
  • 非对称算法:一对公钥私钥
    • 私钥是只有自己知道
    • 公钥发给对方
    • 所以一般公钥加密,私钥解密

在这里插入图片描述

4.2.2主机间的相互免秘钥

在这里插入图片描述

1.生成密钥

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
  • 运行以上命令后会在 ~/.ssh/ 目录下生成一对密钥对。

2.拷贝公钥

把自己的公钥传递给对方主机即可,这个公钥文件必须放在对方主机的~/.ssh/authorized_keys 文件中。

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.163.102
  • 第一次建立连接时会弹出一个警告,需要输入 yes 将该主机添加到当前设备的已知主机列表中。这个警告是可以忽略的.
  • 查看对方主机的 ~/.ssh/authorized_keys
  • 传输文件测试是否已免密

3.SSH 公钥检查

  • SSH 连接远程主机时,会检查主机的公钥。如果是第一次该主机,会显示该主机的公钥摘要,提示用户是否信任该主机。
  • 接受后就会将该主机的公钥追加到文件 ~/.ssh/known_hosts 中。

为了方便,关闭严格的密钥检查。

本次生效: ssh -o StrictHostKeyChecking=no root@node01
永久生效:修改 /etc/ssh/ssh_config 文件的配置,在 Host * 节点下配置以下信息:
# 严格的密钥检查 no
StrictHostKeyChecking no
  • SSH 对主机公钥的检查等级是根据 StrictHostKeyChecking 变量来配置的:

    • StrictHostKeyChecking=no :最不安全的级别,当然也没有那么多烦人的提示了,相对安全的内网建议使用。如果访问的计算机的公钥在本地不存在,会自动添加到文件中(默认是 known_hosts ),并且给出一个警告
    • StrictHostKeyChecking=ask :默认的级别,就是出现刚才的提示。如果连接和公钥不匹配,给出提示,并拒绝登录。
    • StrictHostKeyChecking=yes :最安全的级别,如果连接和公钥不匹配,拒绝连接,不会提示详细信息。

简而言之Linux服务器之间免密的实现步骤如下:

  1. 在一台服务器A上生成SSH密钥对
  2. ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    1. 使用ssh-keygen生成
    2. 会生成到~/.ssh目录A
  3. A将公钥发送到需要免密的服务器B
  4. 验证免密登录是否成功
    1. B检查ak文件中是否有A的公钥
    2. B会随机生成一个字符串,用A的公钥进行加密并发送给A
    3. A拿到B加密的字符串,用A的私钥进行解密,把解密后的字符串发送给B
    4. B拿到A解密后的字符串与自己之前生成的字符串进行对比,相同则免密

4.3日期与时间

  • 查看时区
    • ll /etc/localtime
    • /etc/localtime -> …/usr/share/zoneinfo/America/Los_Angeles
  • 设置时区
    • ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  • date
    • 查看当前系统时间
  • cal 查看日历
    • cal 2020
  • 修改时间
    • date -s 11:11:11
    • date -s 2019-11-11
    • date -s ‘2019-11-11 11:11:11’
  • 日期自动同步
    • 首先安装时间同步的服务
      • yum -y install ntp
    • 自动同步网络时间中心
      • ntpdate cn.ntp.org.cn

5. 用户-组-权限

在这里插入图片描述

5.1 用户

useradd 命令可以用来创建新的用户或更改用户的信息。帐号建好之后,再用 passwd 设定帐号的密码。使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中。

useradd [选项] [用户名]
  • -D :改变新建用户的预设值
  • -c :添加备注文字
  • -d :新用户每次登陆时所使用的家目录
  • -e :用户终止日期,日期的格式为 YYYY-MM-DD
  • -f :用户过期几日后永久停权。当值为 0 时用户立即被停权,而值为 -1 时则关闭此功能,预设值为 -1
  • -g :指定用户对应的用户组
  • -G :定义此用户为多个不同附属组的成员
  • -m :用户目录不存在时则自动创建
  • -M :不建立用户家目录,优先于 /etc/login.defs 文件设定
  • -n :取消建立以用户名称为名的群组
  • -r :建立系统帐号
  • -u :指定用户 id

新增用户(默认会创建同名的组和家目录)

useradd 用户名

设置密码

passwd 用户密码

查看用户

id 用户名
cat /etc/passwd
cat /etc/shadow

修改用户

# 修改用户名(组名称和家目录是不会被修改的)
usermod -l newname oldname
# 锁定用户(禁止登录)
usermod -L 用户
# 解锁用户
usermod -U 用户名

删除用户

userdel -r 用户名

切换用户

su - 用户名

注意:使用 su 命令时,有 - 和没有 - 是完全不同的,- 选项表示在切换用户身份的同时,连当前使用的环境变量也切换成指定用户的。

5.2 组

在这里插入图片描述

修改用户的组:

# -g 修改主组(只能一个)
[root@node01 ~]# usermod 用户名 -g 组名
# -G 修改附属组(可以多个)
[root@node01 ~]# groupadd 组名
[root@node01 ~]# groupadd 组名
[root@node01 ~]# usermod 用户名 -G 组名,组名

这个组是别人的主组就删不了。

5.3 权限

在这里插入图片描述

在这里插入图片描述

权限分别对应了用户、组、其他,那我们就可以直接修改文件所属信息来达到权限的控制。

  • chown:修改文件所属
    • -R:递归修改整个文件夹的所属
  • chmod:
    • ugo:不能同时进行多个操作,但是可以多个角色分配一个操作,例如 chmod ugo+w xxx.sh
    • 777:比较方便
5.3.2赋予权限
  • 可以赋予一个普通用户一些超级管理员命令,方便业务操作。

  • 例如创建用户的命令我们可以交给一个特定的用户去操作。但是默认情况下是不允许的,因为这个命令属于 sbin 命令即超级用户才可以使用的命令。

  • 我们可以通过修改 /etc/sudoer配置文件来赋予普通用户权限。

  • 在这里插入图片描述

  • 以上配置支持通配符 * ,如果想赋予更多权限 /sbin/user* 或者 /sbin/* 即可。

  • 配好之后再用户执行该命令之前,添加sudo就可以使用该命令了。

6. 管道与重定向

6.1 管道

管道 |就是将前面命令的结果作为参数传递给后面的命令。

6.2 重定向

在这里插入图片描述

Linux 中的重定向就是将原本要输出到屏幕中的数据信息,重新指向某个特定的文件中,或者定向到黑洞(/dev/null)中。

  • 当程序执行输出的信息比较多时,需要保存下来在进行分页查看。
  • 后台执行的程序一般都会有输出,不希望它输出干扰到终端。
  • 执行定时的备份任务,希望备份的结果保留下来时。
  • 当重复创建用户,会提示一些错误信息,可以直接将信息丢弃。
  • 希望将错误日志与正确日志,分别输出保存到不同文件时。

在 Linux 系统中,有标准输入,标准输出和错误输出,分别对应 0,1,2 这三个文件描述符

在这里插入图片描述

6.2.1 输出重定向

如果想收集这些内容或者不希望它输出干扰到终端,可以使用重定向将其进行处理:

  • >:将输出内容追加到目标文件,如果文件不存在,就创建文件;如果文件存在,就将其清空。例如: echo > .bash_history ,将文件内容清空(文件大小变成 0 字节)。
  • >>:将输出内容追加到目标文件,如果文件不存在,就创建文件;如果文件存在,则将新的内容追加到文件末尾,该文件中的原有内容不受影响。
6.2.2 输入重定向

输入重定向,即原本从键盘等设备上获得的输入信息,重定向由命令的输出作为输入。

  • 命令 < 文件 # 将指定文件作为命令的输入设备
  • 命令 < 文件1 > 文件2 # 将文件1作为命令的输入设备,该命令的执行结果输出到文件2中
  • 命令 << 分界符 # 表示从标准输入设备(键盘)中读入,直到遇到分界符才停止(读入的数据不包括分界符)

7.Linux的系统进程

7.1 进程信息

  • ps -ef
    • -a:显示所有进程,包括没有控制终端的进程
    • -u:显示指定用户的进程
    • -e:显示所有的进程,包括被暂停的进程
    • -f:以全格式显示进程信息
    • UID PID PPID C STIME TTY TIME CMD
    • UID 所属用户
    • PID 当前进程编号
    • PPID 当前进程编号的父进程编号
  • ps -ef | grep redis
  • ps -aux
    • 所有信息
  • ps -aux --sort -pcpu
  • top
    • 当前服务器内存使用率

7.2 后台进程

只需要在命令的后面添加一个 & 符号即可将进程切换为后台执行

以上方式开启的后台进程,当退出终端时进程就一并结束了。可以使用 nohup 命令防止后台进程被挂起,nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

7.3 杀死进程

kill命令用于向指定的进程发送信号

  • -9:暴力杀死进程
  • -15:温柔告诉进程该休息了
    • 当前进程立即停止
    • 进程释放相应的资源,然后停止
    • 进程无视继续运行

8. Linux的软件安装

8.1 环境变量

配置环境变量的几种方式:

在这里插入图片描述

在这里插入图片描述

  • 系统环境变量 profile(/etc/profile):
    • 所有用户都生效
    • 当用户登录(login)时,文件会被执行,并从 /etc/profile.d 目录的配置文件中查找 shell 设置。
    • 每次修改完成之后,需要重新加载文件 source /etc/profile
  • 自定义环境变量脚本(/etc/profile.d):
    • 在/etc/profile.d目录下新增.sh格式文件配置环境变量
  • 用户环境变量(bashrc/bash_profile(推荐)):
    • bashrc 文件只会对指定的 shell 类型起作用
      • 系统级的位于 /etc/bashrc ,对所有用户生效
      • 用户级的 ~/.bashrc ,对当前用户生效
    • 文件存储于 ~/.bash_profile ,该文件是一个用户级的设置,可以理解为某一个用户的 profile 目录下。
    • 这个文件同样也可以用于配置环境变量和启动程序,但只针对单个用户有效。
    • 配置后要重新加载环境变量
  • bash会话配置环境变量:
    • 当前会话有效,退出登录失效
    • 实时生效,临时使用

8.2 软件安装

在这里插入图片描述

在这里插入图片描述

  • rpm
    • 安装命令:rpm -i xxx.rpm rpm [选项] 软件包
    • 安装位置:
      • 运行命令以软连接的方式添加在/:usr/bin
      • 文件安装在:/usr
      • 权限配置在:/etc
      • 动态数据文件在:/var
    • 安装特点:
      • 安装的如果是服务器软件,会自动添加到系统服务
      • 如果待安装的软件有依赖没有安装,rpm会报错不会继续安装
  • yum(底层是rpm):
    • 安装命令:yum [选项] install/remove/update 安装包
    • 安装位置:
      • 运行命令以软连接的方式添加在/:usr/bin
      • 文件安装在:/usr
      • 权限配置在:/etc
      • 动态数据文件在:/var
    • 安装特点:
      • 如果待安装的软件有依赖没有安装,yum会先安装依赖再安装完软件

在这里插入图片描述

  • 解压即安装
    • 安装命令:tar -zxvf 安装包 -zx (解压)v(过程)f(文件)
    • 安装特点:
      • 软件解压在哪就安装在哪
      • 需要自己配置环境变量或配置软件运行文件到bin目录下
      • 自己添加到系统服务
      • 卸载和升级需要自己完成

在这里插入图片描述

  • 源码安装
    • 下载源码安装包
    • 检查相关依赖
    • 安装相关依赖
    • 配置环境变量
    • 编译安装
8.3 系统服务

在Linux中可以使用 systemd 添加系统服务,systemd 是目前 Linux 系统上主要的系统守护进程管理工具。

  • systemd 是内核启动后的第一个用户进程,PID 为 1,是所有其它用户进程的父进程。
  • systemd 所管理的所有系统资源都称作 Unit,通过 systemd 命令集可以方便的对这些 Unit 进行管理。
  • 特点:
    • 最新系统都采用 systemd 管理(RedHat7,CentOS7,Ubuntu15,…);
    • CentOS7 支持开机并行启动服务,显著提高开机启动效率;
    • CentOS7 关机只关闭正在运行的服务,而 CentOS6,全部都关闭一次;
    • CentOS7 服务的启动与停止不再使用脚本进行管理,也就是 /etc/rc.d/init.d 下不在有脚本;
    • CentOS7 使用 systemd 解决原有模式缺陷,比如原有 service 不会关闭程序产生的子进程。
  • 语法:systemctl [command] [unit](配置的服务名称):
    • start :启动指定的 Unit,例如 systemctl start nginx
    • stop :关闭指定的 Unit,例如 systemctl stop nginx
    • restart :重启指定的 Unit,例如 systemctl restart nginx
    • reload :重载指定的 Unit,例如 systemctl reload nginx
    • enable :系统开机时自动启动指定的 Unit,例如 systemctl enable nginx
    • disable :系统开机时不自动运行指定的 Unit,例如 systemctl disable nginx
    • status :查看指定的 Unit 当前运行状态,例如 systemctl status nginx

9. Linux的定时任务

在这里插入图片描述

在 Linux 系统中的 crond 是一个定时计划任务服务,该服务默认开机启动。定时计划任务,故名意思就计划好的任务,到了时间就会自动执行。用户只要按照正确的格式(分、时、日、月、星期、命令)写入到配置文件中,那么就会按照预定的周期时间自动的执行下去。

在线编写 Crontab:https://crontab.guru/examples.html

语法格式

  • crontab [选项]
    • -e :编辑任务
    • -l :列出任务
    • -r :删除任务
    • -u :指定用户(只有 root 权限可以设置)

编辑任务

  • 编辑定时任务的格式为: * * * * * command ,由 6 项参数组成,前面 5 个 * 星号分别代表 minute、hour、day、month、week。command 是任务执行的命令。

在这里插入图片描述

特殊符号

  • *:星号,代表每个时刻。如 5 个星号就是每 1 分钟,每 1 个小时,每 1 天,每 1 个月,每 1 周。简单理解就是每时每刻,每 1 分钟执行一次命令。
  • , :逗号,代表分隔字段。例如: 15,20,45 * * * * command 代表每小时的第 15 分、20 分、45 分执行命令。
  • -:减号,代表一段时间的范围。例如: 10 7-10 * * * command 代表每天的 7 点 到 10 点这个时间范围,逢第 10 分钟执行命令。也就是7点10分、8点10分、9点10分、10点10分执行命令。
  • /n :/ 代表间隔,n 代表数字,也就是每隔 n 个单位间隔的意思。例如: */5 * * * * command 代表每隔 5 分钟执行命令一次。

相关文章:

三十分钟学会Linux的基本操作

GNU/Linux GNU项目是由Richard Stallman发起的自由软件运动&#xff0c;旨在创建一个完全自由的操作系统。虽然GNU项目已经开发了大量的系统组件和工具&#xff0c;但它一直缺少一个完整的操作系统内核。在这时Linus Torvalds开发了Linux内核&#xff0c;并将其发布为自由软件…...

1688商品详情数据接口(1688.item_get)

1688商品详情数据接口是一种程序化的接口&#xff0c;通过这个接口&#xff0c;商家或开发者可以使用自己的编程技能&#xff0c;对1688平台上的商品信息进行查询、获取和更新。这个接口允许商家根据自身的需求&#xff0c;获取商品的详细信息&#xff0c;例如价格、库存、描述…...

SA实战 ·《SpringCloud Alibaba实战》第14章-服务网关加餐:SpringCloud Gateway核心技术

大家好,我是冰河~~ 一不小心《SpringCloud Alibaba实战》专栏都更新到第14章了,再不上车就跟不上了,小伙伴们快跟上啊! 在《SpringCloud Alibaba实战》专栏前面的文章中,我们实现了用户微服务、商品微服务和订单微服务之间的远程调用,并且实现了服务调用的负载均衡。也基…...

设计师不能忽视的几个宝藏图标设计工具

在这个快速变化的时代&#xff0c;设计师对创新和实用工具的需求越来越大。这就要求我们及时跟上潮流&#xff0c;不断探索和尝试最新、最有价值的图标设计工具。只有这样&#xff0c;我们才能在竞争激烈的设计市场中脱颖而出。以下是我们精心挑选的2024年值得一试的图标设计工…...

设计模式-行为型模式-模板方法模式

一、什么是模板模式 模板方法模式&#xff08;Template Method Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一个算法骨架&#xff0c;允许子类在不改变算法整体结构的情况下重新定义算法的某些步骤。 主要组成部分&#xff1a; 1、模板方法&#xff08;Templ…...

露营管理系统预约小程序效果如何

旅游经济已经复苏&#xff0c;并且市场规模增速加快&#xff0c;近一年来远途/周边游客户增多&#xff0c;不少旅游景区在节假日常常面对客流爆满现象。同时露营作为近几年突然火热的项目&#xff0c;其需求也是日渐上升。 然而在高需求的同时&#xff0c;我们也看到露营经营痛…...

【产品安全平台】上海道宁与Cybellum将整个产品安全工作流程整合到一个专用平台中,保持构建的互联产品的网络安全和网络合规性

Cybellum将 整个产品安全工作流程 整合到一个专用平台中 使设备制造商能够 保持他们构建的互联产品的 网络安全和网络合规性 产品安全性对 每个人来说都不一样 每个行业的系统、工作流程和 法规都存在根本差异 因此&#xff0c;Cybellum量身定制了 Cybellum的平台和技…...

css 实现鼠标上移添加下划线

效果图 实现代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wi…...

C语言--给定一个数组,把第一项的值减去第二项的值,第二项的值减去第三项的值,第三项的值减去第四项的值,依次类推。放到一个新的数组中,并打印新的数组

一.题目描述&#xff1a; 给定一个数组&#xff0c;把第一项的值减去第二项的值&#xff0c;第二项的值减去第三项的值&#xff0c;第三项的值减去第四项的值&#xff0c;依次类推。放到一个新的数组中&#xff0c;并打印新的数组。 比如&#xff1a;输入一个数组是5&#xff…...

Vue+Swiper实现轮播图效果

效果展示 实现了自带切换按钮在图片外部实现了自定义的切换按钮 背景 在项目中使用到了轮播图&#xff0c;实现点击上一张下一张时实现循环显示&#xff0c;同时预览两个图片&#xff0c;并加以文字对图片的说明。 设计 使用 Swiper 插件&#xff0c;可以实现当前这个需求。…...

竞赛选题 行人重识别(person reid) - 机器视觉 深度学习 opencv python

文章目录 0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图 4 实现效果5 部分代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习行人重识别(person reid)系统 该项目…...

解决vue中引入天地图显示不全问题,设置setTimeout即可解决!

index.html中引入天地图api <script type"text/javascript" src"https://api.tianditu.gov.cn/api?v4.0&tk你的key"></script>map.vue中初始化天地图 //初始化天地图 initTMap() {const T window.T;// 3.初始化地图对象this.tMap new…...

【OpenCV实现图像:使用OpenCV进行物体轮廓排序】

文章目录 概要读取图像获取轮廓轮廓排序小结 概要 在图像处理中&#xff0c;经常需要进行与物体轮廓相关的操作&#xff0c;比如计算目标轮廓的周长、面积等。为了获取目标轮廓的信息&#xff0c;通常使用OpenCV的findContours函数。然而&#xff0c;一旦获得轮廓信息后&#…...

【8】Spring Boot 3 集成组件:安全组件 spring security【官网概念篇】

目录 【8】Spring Boot 3 集成组件&#xff1a;安全组件 spring securitySpring Security 简介先决条件引入依赖身份验证密码存储密码存储历史DelegatingPasswordEncoder密码存储格式密码加解密类自定义密码存储 体系结构 ArchitectureServlet 过滤器DelegatingFilterProxyFilt…...

UDP中connect的作用

udpclientNoConnect.c里边的内容如下&#xff1a; #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<arpa/inet.h> #include<sys/socket.h> #include <errno.h> #include <syslog.h…...

Go使用开源库go-excelize操作Excel文件

以下是一个示例代码&#xff0c;读取一个 Excel 文件并打印其中的所有单元格值&#xff1a; package mainimport ("fmt""github.com/30x/go-excelize" )func main() {// 打开 Excel 文件f, err : excelize.OpenFile("yourfile.xlsx")if err ! n…...

软件测试个人求职简历该怎么写,模板在这里

1、个人资料 姓名&#xff1a;xxx性别&#xff1a;x 手机号码&#xff1a;138888888xx邮箱&#xff1a;xxx 学历&#xff1a;本科专业&#xff1a;电子商务 英语&#xff1a;四级当前工作&#xff1a;测试工程师 从业时间&#xff1a;4年期望薪资&#xff1a;面议 求职意向软件…...

opencv-Hough 圆环变换

Hough 圆环变换&#xff08;Hough Circle Transform&#xff09;是一种用于在图像中检测圆环的技术。与 Hough 直线变换类似&#xff0c;它通过在参数空间中表示图像中的圆环&#xff0c;将圆环检测问题转换为参数空间的累加问题。OpenCV 提供了 cv2.HoughCircles() 函数来执行…...

福州大学《嵌入式系统综合设计》实验五:图像裁剪及尺寸变换

一、实验目的 在深度学习中&#xff0c;往往需要从一张大图中裁剪出一张张小图&#xff0c;以便适应网络输入图像的尺寸&#xff0c;这可以通过bmcv_image_crop函数实现。 实践中&#xff0c;经常需要对输入图像的尺寸进行调整&#xff0c;以适用于网络输入图片尺寸&#xff0…...

LLM之Prompt(二):清华提出Prompt 对齐优化技术BPO

论文题目&#xff1a;《Black-Box Prompt Optimization: Aligning Large Language Models without Model Training》 论文链接&#xff1a;https://arxiv.org/abs/2311.04155 github地址&#xff1a;https://github.com/thu-coai/BPO BPO背景介绍 最近&#xff0c;大型语言模…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用

前言&#xff1a;我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM&#xff08;Java Virtual Machine&#xff09;让"一次编写&#xff0c;到处运行"成为可能。这个软件层面的虚拟化让我着迷&#xff0c;但直到后来接触VMware和Doc…...

【WebSocket】SpringBoot项目中使用WebSocket

1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖&#xff0c;添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...

【51单片机】4. 模块化编程与LCD1602Debug

1. 什么是模块化编程 传统编程会将所有函数放在main.c中&#xff0c;如果使用的模块多&#xff0c;一个文件内会有很多代码&#xff0c;不利于组织和管理 模块化编程则是将各个模块的代码放在不同的.c文件里&#xff0c;在.h文件里提供外部可调用函数声明&#xff0c;其他.c文…...