Linux学习记录(六)

写在前面

本文主要介绍一些Linux中的自有服务

Linux自有服务

主机名

查看主机名

  • hostname
  • hostname -f 查看主机的FQDN(全限定域名)

设置主机名

临时设置

  • hostname test
    image.png

永久修改

  • 修改/etc/hostname文件
    image.png
    重启登陆后
    image.png

设置服务器的FQDN

  • 修改/etc/hosts
    image.png
    ![YNR148RA13OVGSL.png](https://neo00.top/upload/2020/05/%5DYN%5BR%60148RA%5D13O%5D%7DVG$@SL-0805fe36f5ed4edbbb7d823ff3017472.png) 尝试去Ping一下自己的网站,此时显示的ip为, 自定义解析地址,再去Ping发现IP`地址已经更换
    image.png
    image.png

systemctl命令介绍

apache为例

  • 使某服务自动启动
    systemctl enable httpd.service
  • 使某服务不自动启动
    systemctl disable httpd.service
  • 检查服务状态
    systemctl status httpd.service
  • 显示所有已启动的服务
    systemctl list-unit-files
  • 启动某服务
    systemctl start httpd.service
  • 停止某服务
    systemctl stop httpd.service
  • 重启某服务
    systemctl restart httpd.service

扩展

sysv-rc-conf

  • 安装sysv-rc-confapt-get -y install sysv-rc-conf
  • 启动服务,sysv-rc-conf
    image.png
    操作界面十分简洁,你可以用鼠标点击,也可以用键盘方向键定位,用空格键选择,X表示开启该服务。 用Ctrl+N翻下一页,用Ctrl+P翻上一页,用Q退出。
    补充:
  • 表头代表Ubuntu不同启动级别
  • 第一列代表服务名称

防火墙

Linux原始的防火墙工具iptables比较繁琐,ubuntu默认提供了一个基于iptable之上的防火墙配置工具ufw,使管理iptables更简单。

常用命令

  • 安装
    apt-get -y install ufw

  • 启用/禁用
    ufw enable / disable
    image.png
    此时外部无法访问该虚拟机(SSH,IP)都不可以

  • 查看防火墙当前状态
    ufw status

  • 允许 / 拒绝访问

    • ufw allow / deny 80 #允许/禁止外部访问80端口
    • ufw allow 80/tcp #80后面加/tcp或/udp,表示tcp或udp封包
    • ufw deny smtp #禁止外部访问smtp服务
    • ufw allow from 192.168.100.38   #允许此IP访问本机所有端口
    • ufw allow / deny serviceName #对service服务的端口进行过滤,/etc/services中对应端口
  • 外来访问默认允许 / 拒绝
    ufw default allow / deny

  • 删除规则

    • ufw delete allow 80
    • ufw delete allow from 192.168.100.38
  • 开启 / 关闭日志
    sudo ufw logging on / off

  • 查看说明
    ufw --help
    image.png

  • 查看配置文件

    • 路径/etc/ufw
      image.png
    • user.rules用来设置的防火墙规则,修改后重启ufw生效
    • 启动ufw后,/etc/ufw/sysctl.conf会覆盖系统的/etc/sysctl.conf 文件。
    • 可以通过修改 /etc/default/ufw 中的 IPT_SYSCTL= 来设置系统使用哪个 sysctrl.conf
      image.png

推荐配置

建议默认拒绝,然后按照自己的需求添加规则。

dpkg管理

作用

dpkgpackage manager for Debian ,是 Debian 和基于 Debian 的系统中一个主要的包管理工具,可以用来安装、构建、卸载、管理 deb 格式的软件包。

安装软件

  • 使用 dpkg 命令安装软件时,可以使用 -i 选项并指定 deb 安装包的路径。和 Ubuntu 下的另一个包管理工具 apt-get有所不同。
  • apt-get 命令并不直接操作 deb 安装包文件,而是从 /etc/apt/sources.list 配置文件中定义的软件镜像源里下载软件包并安装,使用时也只需指定软件的名称(或者也可以附加上版本号)。
  • 使用apt-get 命令安装软件
    • apt-get install <package_name[=version]>
  • dpkg 命令安装软件
    • dpkg -i <package_file_path>
      因此,dpkg 主要是用来安装已经下载到本地的 deb 软件包,或者对已经安装好的软件进行管理。而 apt-get 可以直接从远程的软件仓库里下载安装软件。

列出已安装的软件包

dep -l
image.png
解释:

$ dpkg -l
期望状态=未知(u)/安装(i)/删除(r)/清除(p)/保持(h)
| 状态=未安装(n)/已安装(i)/仅存配置(c)/仅解压缩(U)/配置失败(F)/不完全安装(H)/触发器等待(W)/触发器未决(T)
|/ 错误?=(无)/须重装(R) (状态,错误:大写=故障)
||/ 名称                                          版本                                体系结构     描述
+++-=============================================-===================================-============-===============================================================================
ii  2048-qt                                       0.1.6-1build1                       amd64        mathematics based puzzle game
ii  accountsservice                               0.6.50-0ubuntu1                     amd64        query and manipulate user account information
ii  acl                                           2.2.53-4                            amd64        access control list - utilities
ii  acpi-support                                  0.143                               amd64        scripts for handling many ACPI events
ii  acpid                                         1:2.0.31-1ubuntu2                   amd64        Advanced Configuration and Power Interface event daemon
ii  adduser                                       3.118ubuntu1                        all          add and remove users and groups
ii  adwaita-icon-theme                            3.32.0-1ubuntu1                     all          default icon theme of GNOME (small subset)
ii  alsa-base                                     1.0.25+dfsg-0ubuntu5                all          ALSA driver configuration files
ii  alsa-utils                                    1.1.8-1ubuntu1                      amd64        Utilities for configuring and using ALSA
...
  • ii 表示软件包的安装和配置状态,其格式为期望状态|当前状态|错误
    • 期望状态:
      • u:即 unknown,软件包未安装且用户未请求安装
      • i:即 install,用户请求安装该软件包
      • r:即 remove,用户请求卸载该软件包
      • p:即 purge,用户请求卸载该软件包并清理配置文件
      • h:即 hold,用户请求保持续当前软件包版本
    • 当前状态:
      • n:即 not-installed,软件包未安装
      • i:即 installed,软件包已安装并完成配置
      • c:即 config-files,软件包已经被卸载,但是其配置文件未清理
      • u:即 unpacked,软件包已经被解压缩,但还未配置
      • f:即 half-configured,配置软件包时出现错误
      • w:即 triggers-awaited,触发器等待
      • t:即 triggers-pending,触发器未决
    • 错误:
      • h:软件包被强制保持
      • r:即 reinstall-required,需要卸载并重新安装
      • x:软件包被破坏
    • eg
      • ii:表示软件需要安装且已安装,没有错误
      • rc:表示软件已经被删除,但是配置文件还没被清理
      • iu:表示软件已经被安装但是配置未正确
  • 还可以使用 dpkg -l <package_name_pattern> 命令筛选出名称中包含指定模式的软件包
    image.png

卸载软件

dpkg -r 需要卸载的软件的名称

需要注意的是,-r 选项只会移除指定的软件包而不对其配置文件产生影响,可以使用 -P, 选项在删除软件包的同时清理配置文件。dpkg -P <package>

其他包管理操作

  • 查看软件包的内容
    dpkg -c <package_file_path>
  • 查看软件包(已安装)的详细信息
    dpkg -s <package>dpkg --status <package>
  • 查看软件包的安装位置
    dpkg -L <package>dpkg --list-files <package>

apt

简介

虽然我们在使用dpkg时,已经解决掉了 软件安装过程中的大量问题,但是当依赖关系不满足时,仍然需要手动解决,而apt这个工具解决了这样的问题,linux distribution 先将软件放置到对应的服务器中,然后分析软件的依赖关系,并且记录下来,然后当客户端有安装软件需求时,通过清单列表与本地的dpkg以存在的软件数据相比较,就能从网络端获取所有需要的具有依赖属性的软件了。

工作原理

Ubuntu采用集中式的软件仓库机制,将各式各样的软件包分门别类地存放在软件仓库中,进行有效地组织和管理。然后,将软件仓库置于许许多多的镜像服务器中,并保持基本一致。这样,所有的Ubuntu用户随时都能获得最新版本的安装软件包。因此,对于用户,这些镜像服务器就是他们的软件源(Reposity)
然而,由于每位用户所处的网络环境不同,不可能随意地访问各镜像站点。为了能够有选择地访问,在Ubuntu系统中,使用软件源配置文件/etc/apt/sources.list列出最合适访问的镜像站点地址。

  • apt-get的更新过程
    • 执行apt-get update
    • 程序分析/etc/apt/sources.list
    • 自动连网寻找list中对应的Packages/Sources/Release列表文件,如果有更新则下载之,存入/var/lib/apt/lists/目录
    • 然后 apt-get install 相应的包 ,下载并安装。
  • apt-get install原理图
    image.png

常用命令

  • apt-get update #更新源
  • apt-get dist-upgrade #升级系统到相应的发行版(根据 source.list 的配置)
  • apt-get upgrade #更新所有已经安装的软件包
  • apt-get install package_name #安装软件包(加上 --reinstall重新安装)
    • apt-get install package_name=version #安装指定版本的软件包
  • apt-get remove package_name #卸载一个已安装的软件包(保留配置文件)
    • apt-get -purge remove package_name #卸载一个已安装的软件包(删除配置文件)
  • apt-get check #检查是否有损坏的依赖
  • apt-get clean #把安装的软件的备份也删除,不过这样不会影响软件的使用

crontab

作用

crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

用法

crontab 选项
常见选项:

  • -e:编辑该用户的计划任务列表;
  • -l:列出该用户的计划任务列表;
  • -r:删除该用户的计划任务列表设置;
  • -u<用户名称>:指定要设定计划任务的用户名称,如果不加,默认当前用户。
    image.png

编辑计划任务

Linux下的任务调度分为两类:系统任务调度和用户任务调度

系统调度

系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc/crontab文件,这个就是系统任务调度的配置文件。
image.png
图列解释:

  • 第一行:SHELL变量指定了系统要使用哪个shell,这里是bash
  • 第二行:PATH变量指定了系统执行命令的路径

用户调度

用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在/var/spool/cron目录中。其文件名与用户名一致,使用者权限文件如下:

  • /etc/cron.deny 该文件中所列用户不允许使用crontab命令
  • /etc/cron.allow 该文件中所列用户允许使用crontab命令
  • /var/spool/cron/ 所有用户crontab文件存放的目录,以用户名命名

文件含义

用户所建立的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:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
    在以上各个字段中,还可以使用以下特殊字符:
  • 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
  • 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
  • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
  • 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

案例

每1分钟往~家目录中的ls.txt中输入当前的列表的信息,为了看到效果使用追加输出
计划任务:* * * * * ls-la ~>> /~/ls.txt

补充

本文借鉴的文章
rollingstarky
Nosee123