写在前面
本文主要介绍一些Linux
中的自有服务
Linux自有服务
主机名
查看主机名
- hostname
- hostname -f 查看主机的FQDN(全限定域名)
设置主机名
临时设置
- hostname test
永久修改
- 修改
/etc/hostname
文件
重启登陆后
设置服务器的FQDN
- 修改
/etc/hosts
 尝试去
Ping一下自己的网站,此时显示的
ip为, 自定义解析地址,再去
Ping发现
IP`地址已经更换
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-conf
,apt-get -y install sysv-rc-conf
- 启动服务,
sysv-rc-conf
操作界面十分简洁,你可以用鼠标点击,也可以用键盘方向键定位,用空格键选择,X
表示开启该服务。 用Ctrl+N
翻下一页,用Ctrl+P
翻上一页,用Q
退出。
补充: - 表头代表
Ubuntu
不同启动级别 - 第一列代表服务名称
防火墙
Linux
原始的防火墙工具iptables
比较繁琐,ubuntu
默认提供了一个基于iptable
之上的防火墙配置工具ufw
,使管理iptables
更简单。
常用命令
-
安装
apt-get -y install ufw
-
启用/禁用
ufw enable / disable
此时外部无法访问该虚拟机(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
-
查看配置文件
- 路径
/etc/ufw
user.rules
用来设置的防火墙规则,修改后重启ufw
生效- 启动
ufw
后,/etc/ufw/sysctl.conf
会覆盖系统的/etc/sysctl.conf
文件。 - 可以通过修改
/etc/default/ufw
中的IPT_SYSCTL=
来设置系统使用哪个sysctrl.conf
- 路径
推荐配置
建议默认拒绝,然后按照自己的需求添加规则。
dpkg管理
作用
dpkg
即package 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
解释:
$ 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>
命令筛选出名称中包含指定模式的软件包
卸载软件
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
原理图
常用命令
- 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<用户名称>:指定要设定计划任务的用户名称,如果不加,默认当前用户。
编辑计划任务
Linux
下的任务调度分为两类:系统任务调度和用户任务调度
系统调度
系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc/crontab
文件,这个就是系统任务调度的配置文件。
图列解释:
- 第一行:
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