用法一:systemctl list-units --type service --all 不加具体服务名示例代码:#systemctl list-units --type service --all含义:列出所有服务,包括已运行的和没有运行的空格可以翻页,q退出
用法二:systemctl list-units --type service 不加具体服务名示例代码:#systemctl list-units --type service含义:列出已运行的服务空格可以翻页,q退出
2、查看启动和停止服务命令:systemctl作用:管理服务语法:#systemctl [选项] 服务名选项: status:检查指定服务的运行状况 start:启动指定服务 stop:停止指定服务 restart:重启指定服务 reload:重新加载指定服务的配置文件(并非所有服务都支持reload,通常使用restart)用法三:systemctl 选项 服务名示例代码:#systemctl status crond含义:查看crond服务的状态
Active:active(running) 表示当前crond服务是运行状态用法四:systemctl 选项 服务名示例代码:#systemctl stop crond含义:停止crond服务
Inactive,表示crond服务当前是停止状态用法五:systemctl 选项 服务名示例代码:#systemctl start crond含义:启动crond服务
用法六:systemctl 选项 服务名示例代码:#systemctl restart crond含义:重启crond服务#systemctl reload crond含义:重新加载crond服务配置文件
3、服务持久化 所谓服务持久化,就是服务在开机的时候,是否自动启动命令:systemctl作用:管理服务语法:#systemctl [选项] 服务名选项: enable:指定服务开机自动启动 disable:取消服务开机自动启动用法七:systemctl 选项 服务名示例代码:#systemctl disable crond含义:取消crond服务开机启动
用法八:systemctl 选项 服务名示例代码:#systemctl disable crond含义:指定crond服务开机启动
systemctl参数总结三、常用自有服务(ntp,firewalld,crond)1、ntp时间同步服务 NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议工作场景: 公司开发了一个电商网站,由于访问量很大,网站后端由100台服务器组成集群50台负责接收订单,50台负责安排发货,接收订单的服务器需要记录用户下订单的具体时间,把数据传给负责发货的服务器,由于100台服务器时间各不相同,记录的时间经常不一致,甚至会出现下单时间是明天,发货时间是昨天的情况1)NTP同步服务器原理 标准时间是哪里来的? 现在的标准时间是由原子钟报时的国际标准时间UTC(Universal Time Coordinated,世界协调时),所以NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取 在NTP中,定义了时间按照服务器的等级传播,Stratum层的总数限制在15以内 工作中,==通常我们会直接使用各个组织提供的,现成的NTP服务器==2)到哪里去找NPT服务器 NTP授时网站:http://www.ntp.org.cn/pool.php3)时间同步操作同步服务器时间方式有2 个:一次性同步手动同步、通过服务自动同步手动同步用法一:ntpdate 时间服务器IP示例代码:#ntpdate 120.25.108.11含义:从服务器120.25.108.11同步标准网络时间到服务器(120.25.108.11服务器由阿里云提供,可以从http://www.ntp.org.cn/pool.php网站获取)注意:从网络同步时间,要确保自己的服务器可以访问互联网
错误信息:no servers can be used含义:服务器不可用,这里的服务器是指网络上的时间服务器,不可用,不代表是对方服务器有问题,也有可能是你自己的服务器网络不通,无法连接到网络上的时间服务器自动同步用法二:启动ntpd服务,并配置为开机启动示例代码:#systemctl start ntpd#systemctl enable ntpd含义:启动ntpd服务,并配置为开机启动,服务启动后,系统会自动同步网络时间注意:从网络同步时间,要确保自己的服务器可以访问互联网
问题1:启动ntpd服务后,是不是时间就自动同步了?启动后就自动同步了问题2:需不需要让ntpd服务,开机自动运行?需要ntpd服务配置文件位置 /etc/ntp.conf2、firewalld防火墙1)什么是防火墙防火墙:防范一些网络攻击有软件防火墙、硬件防火墙之分防火墙选择让正常请求通过,从而保证网络安全性Windows防火墙:2)传统Linux防火墙3、firewalld防火墙的概念1)区域CentOS6x中防火墙叫做iptablesCentOS7.x 中默认使用的防火墙是firewalld firewalld增加了区域的概念,所谓区域是指,firewalld预先准备了几套防火墙策略的集合,类似于策略的模板,用户可以根据需求选择区域常见区域及相应策略规则2)运行模式和永久模式运行模式:此模式下,配置的防火墙策略立即生效,但是不写入配置文件永久模式:此模式下,配置的防火墙策略写入配置文件,但是需要reload重新加载才能生效==firewall默认采用运行模式==4、firewalld防火墙的配置1)查看,开启和停止firewalld服务命令:systemctl作用:管理服务语法:#systemctl [选项] firewalld选项: status:检查指定服务的运行状况 start:启动指定服务 stop:停止指定服务 restart:重启指定服务 reload:重新加载指定服务的配置文件(并非所有服务都支持reload,通常使用restart) 使用systemctl来管理firewalld的服务,具体命令前面已经讲过,只是服务名换成了firewalld,这里不再赘述2) 管理firewall配置命令:firewall-cmd作用:管理firewall具体配置语法:#firewall-cmd [参数选项1] ....[参数选项n]常用选项:①查看默认使用的区域用法一:firewall-cmd 选项示例代码:#firewall-cmd --get-default-zone含义:查看默认使用区域,当前默认使用区域为public
②查看所有可用区域用法二:firewall-cmd 选项示例代码:#firewall-cmd --get-zones含义:查看所有可用区域
③列出当前使用区域配置用法三:firewall-cmd 选项示例代码:#firewall-cmd --list-all含义:查看所有可用区域
④列出所有区域的配置用法四:firewall-cmd 选项示例代码:#firewall-cmd --list-all-zones含义:查看所有可用区域
⑤添加允许通过的服务或端口用法五:firewall-cmd 选项示例代码:#firewall-cmd --zone=public --add-port=1024/tcp含义:在public区域,添加允许tcp协议的1024端口通过的规则#firewall-cmd --zone=public --add-service=ftp含义:在public区域,添加允许ftp服务通过的规则
⑥去掉允许通过的服务或端口用法五:firewall-cmd 选项示例代码:#firewall-cmd --zone=public --remove-port=1024/tcp含义:在public区域,去掉允许tcp协议的1024端口通过的规则#firewall-cmd --zone=public --remove-service=ftp含义:在public区域,去掉允许ftp服务通过的规则
⑦永久模式参数permaent用法七:firewall-cmd 选项示例代码:#firewall-cmd --permanent --zone=public --add-port=1024/tcp含义:在public区域,使用permanent参数,永久添加允许1024端口通过的规则
⑧重新加载配置reload用法七:firewall-cmd 选项示例代码:#firewall-cmd --reload含义:重新加载配置
5、计划任务crontab1)计划任务的作用作用:操作系统不可能24 小时都有人在操作,有些时候想在指定的时间点去执行任务(例如:每天凌晨 2 点去重新启动Apache),此时不可能真有人每天夜里 2 点去执行命令,这就可以交给计划任务程序去执行操作了2)查看计划任务==语法:# crontab 选项==常用选项:==-l:list,列出指定用户的计划任务列表====-e:edit,编辑指定用户的计划任务列表,简单来说,计划任务就是一个文件==-u:user,指定的用户名,如果不指定,则表示当前用户-r:remove,删除指定用户的计划任务列表示例代码:列出当前用户的计划任务列表上述的提示,代表 root 用户没有计划任务需要去做3)编辑计划任务(重点)进入计划任务编辑文件打开计划任务编辑文件后,可以在此文件中编写我们自定义的计划任务:计划任务的规则语法格式,以行为单位,一行则为一个计划:==分 时 日 月 周 需要执行的命令==例如:0 0 reboot,代表每天0时0分执行reboot指令取值范围(常识):分:0~59时:0~23日:1~31月:1~12周:0~7,0 和 7 表示星期天四个符号::表示取值范围中的每一个数字-:做连续区间表达式的,要想表示1~7,则可以写成:1-7/:表示每多少个,例如:想每 10 分钟一次,则可以在分的位置写:/10,:表示多个取值,比如想在 1 点,2 点 6 点执行,则可以在时的位置写:1,2,6
特别补充:在Linux系统中,有些命令不能直接在计划任务中使用,使用后,其也不会生效如useradd命令如果想让其生效必须使用完整路径问题:如何查询一个命令的真实路径在哪个位置?答:使用whereis 命令名称4)几个小案例问题1:每月1、10、22 日的4:45 重启network 服务问题2:每周六、周日的1:10 重启network 服务问题3:每天18:00 至23:00 之间每隔30 分钟重启network 服务问题4:每隔两天的上午8 点到11 点的第3 和第15 分钟执行一次重启分时日月周 命令或服务问题1:45 4 1,10,22 service network restart问题2:10 1 6,7 service network restart问题3:/30 18-23 service network restart问题4:3,15 8-11 /2 reboot案例:每1 分钟往 root 家目录中的 readme.txt 中输一个1,为了看到效果使用追加输出【输出使用echo 命令,语法:# echo 输出的内容】在末行模式下输入:wq保存并退出,使用tail -f查看readme.txt动态变化注意:在计划任务中,默认最小单位就是分,不能再小了如果需要做到秒级别则需要配合研发相关代码5)扩展① crontab 权限问题crontab是任何用户都可以创建的计划任务,但是超级管理员可以通过配置来设置某些用户不允许设置计划任务 ==黑名单==配置文件位于:/etc/cron.deny 里面写用户名,一行只能写一个保存退出,切换到cndws普通用户,执行crontab命令,如下图所示:==白名单==还有一个配置文件/etc/cron.allow (本身不存在,自己创建)注意:白名单优先级高于黑名单,如果一个用户同时存在两个名单文件中,则会被默认允许创建计划任务② 查看计划任务文件保存路径问题:计划任务文件具体保存在哪里呢?答:/var/spool/cron/用户名文件中,如果使用root用户编辑计划任务,则用户文件名为root③ 查看计划任务日志信息问题:在实际应用中,我们如何查看定时任务运行情况?答:通过计划任务日志,日志文件位于/var/log/cron四、Linux软件包1、软件包概述 这是什么? Linux下也有很多可以安装的软件,而这些软件的安装包可细分为两种,分别是源码包和二进制包1)源码包 源码包就是一大堆源代码程序,是由程序员按照特定的格式和语法编写出来的计算机只能识别机器语言,也就是二进制语言,所以源码包安装之前需要编译 编译过程耗时较长 大多数用户不懂开发,编译过程中可能会有各种错误,用户无力解决 为了解决使用源码包安装的问题,Linux 软件包的安装出现了使用二进制包的安装方式2)二进制包 二进制包,也就是源码包经过成功编译之后产生的包 二进制包是 Linux 下默认的软件安装包,目前主要有以下 2 大主流的二进制包管理系统:==RPM 包==管理系统:功能强大,安装、升级、査询和卸载非常简单方便,因此很多 Linux 发行版都默认使用此机制作为软件安装的管理方式,例如 Fedora、==CentOS==、SuSE 等DPKG 包管理系统:由 Debian Linux 所开发的包管理机制,通过 DPKG 包,Debian Linux 就可以进行软件包管理,主要应用在 Debian 和 Ubuntu 中 RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写 作用:rpm 的作用类似于豌豆荚,华为应用市场,App Store,主要作用是对linux 服务器上的软件包进行对应管理操作,管理分为:查询、卸载、安装/更新2、如何获取rpm包要想装软件,和windows 下一样,先得找到安装包:xxx.rpm软件包的获得方式:a. 去官网去下载(http://rpm.pbone.net);b. 不介意老版本的话,可以从光盘(或者镜像文件)中读取;3、从光盘获取3.1 虚拟机中加载光盘3.2 使用 # lsblk(list block devices)或者df -T 查看块状设备的信息Name:名称Size:设备大小Type:类型MountPoint:挂载点此界面类似于Windows 下的磁盘管理界面:
3.3 进入/run/media/root/CentOS 7 x86_64/Packages目录/run/media/root/CentOS 7 x86_64/Packagesls4、查询某个软件安装情况语法:# rpm -qa | grep 软件名称选项:-q:查询,query-a:全部,all示例代码:查询firefox浏览器的安装情况,已安装rpm -qa |grep firefox示例代码:查询qq软件的安装情况,未安装rpm -qa |grep qq5、卸载某个软件卸载某个软件语法:# rpm -e 软件的名称(建议写完整的名称,通过-qa 查询)案例:卸载火狐浏览器rpm -qa |grep firefox 首先查询firefox软件的完整名称firefox-45.7.0-2.el6.centos.x86_64rpm -e firefox-45.7.0-2.el6.centos.x86_64卸载完成后,单击firefox浏览器图标,运行结果如下图所示:6、安装某个软件命令:rpm作用:管理rpm软件包语法:# rpm -ivh 软件包完整路径名称选项:-i:install,安装-v:显示进度条-h:表示以"#"形式显示进度条示例代码:将刚刚卸载的firefox火狐浏览器重新安装(在DVD光盘1中)用法:rpm -ivh 软件包名称示例代码:#cd /run/media/root/CentOS\ 7\ x86_64/Packages/进入光盘Packages目录,里面存放了很多rpm的安装包#ll |grep firefox查看Packages目录下,包含firefox的安装包#rpm -ivh firefox-60.2.2-1.el7.centos.x86_64.rpm使用rpm命令,安装firefox软件包#rpm -qa |grep firefox查询是否安装完成
安装完成后,打开firefox浏览器7、更新某个软件语法:# rpm -Uvh 完整的安装包路径选项:-U:upgrade,升级-v:表示显示进度条-h:表示以#形式显示进度条这里我会提供给大家firefox的高版本的安装包firefox-60.8.0-1.el7.centos.x86_64.rpm 这个包是用来升级的firefox-68.4.1-1.el7.centos.x86_64.rpm用法:rpm -Uvh 软件包名称示例代码:#rpm -qa |grep firefox查询当前firefox的版本#ll查看root目录下,我们刚刚拷到虚机上的RPM安装包的名称#rpm -Uvh firefox-60.8.0-1.el7.centos.x86_64.rpm使用rpm命令,安装60.8.0版本的软件包#rpm -qa |grep firefox查询升级后的firefox版本
8、rpm扩展8.1依赖关系一个软件必须先有其他软件才能运行,例如之前xmind启动过程中提示的缺少DLL,称之为依赖WAMP(Windows + Apache + MySQL + PHP)安装前必须先安装VC++ 2014 x86_64,这种情况就称之为有依赖关系60.8.0的firefox可以更新成功下面我们尝试更新到68.4.1的版本用法:rpm -Uvh 软件包名称#rpm -Uvh firefox-68.4.1-1.el7.centos.x86_64.rpm使用rpm命令,安装68.4.1版本的软件包
错误提示:error:Failed dependencies:提示安装68版本的firefox需要依赖nspr4.21的版本,nss的3.44的版本,这就是我们说的==依赖关系==为了解决依赖关系的问题,有另外一个管理工具叫做==yum==,后面我们会讲到8.2 查看文件所属的包名(实用)语法:# rpm -qf 需要查询的文件路径选项:-f:查询文件所属包示例代码:查询/etc/ntp.conf 属于哪个软件包?8.3查询软件安装完成后,生成了哪些文件语法:# rpm -ql 需要查询的软件包名称rpm -ql firefoxrpm -ql openssh特别说明:软件安装完成后,一共生成了以下几类文件配置文件类:/etc目录程序文件本身,二进制文件命令:/usr/sbin目录文档手册:/usr/share/doc或man目录
9、扩展:光盘的挂载和解挂① 解挂操作命令:umount语法:# umount 当前设备的挂载点(路径)例如:umount /run/media/root/CentOS\ 7\ x86_64/② 挂载光盘首先新建一个挂载点,然后使用mount命令进行挂在,挂载点可以理解为就是一个空目录命令:mount语法:# mount 设备文件原始地址(/dev目录) 要挂载的位置路径(盘符)设备原始地址:地址统一都在/dev 下,然后根据大小确定具体name 值,拼凑在一起组成原始地址,例如当前:"/dev/sr0"用法:mount 设备 挂载点示例代码:#mkdir /mnt/dvd新建一个目录作为挂载点#mount /dev/sr0 /mnt/dvd将光驱设备/dev/sr0 挂载到 /mnt/dvd这个挂载点#df -T可以看到已经成功挂载
首发于黑马程序员官网对不起,我没有义务帮你用漫画让你清楚了解linux内核,看懂了么?半夜的一次斜眸,我发现了支付宝灰色产业的一角(图片来源网络,侵删)
0 评论