Service:驻留在系统内存中,可以提供一些系统和网络功能的进程;现在最新的Linux系统使用systemctl进行服务管理。1、运行级别的分类runlevel>运行级别0:系统关机状态>运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录>运行级别2:多用户状态(无NFS)>运行级别3:完全多用户状态(带NFS)>运行级别4:系统未使用,保留>运行级别5:X11控制台>运行级别6:系统正常关闭并重新启动2.管理服务systemctl(root权限)>systemctl[opt]xxx.service>status查看当前服务状态>start启动服务>stop关闭服务>restart重启服务>enable设置开机启动>disable设置开机不启动>reload不按照具体服务名,重新加载配置文件>masklogoutservice>unmaskcancellogout3.一些常用的命令查看servicedependencies(Reverse)systemctllist-dependencies--reversexx.service4.system服务相关的一些目录(Centos环境,Debian环境可能略有不同)/usr/lib/systemd/system/安装软件的默认启动脚本在系统目录下/etc/systemd/system/用户根据自己需要创建的启动脚本目录/etc/sysconfig/服务初始化选项目录/var/lib/服务运行时生成的数据存放目录/etc/xxx/每个服务配置目录5.结合例子详细讲解,一台电脑开启两个ssh服务,最常用的ssh服务,系统默认ssh服务的22端口,现在想再开启一个ssh服务,88881端口系统服务启动脚本/usr/lib/systemd/system/sshd.service,复制到/etc/systemd/system/,重命名为sshd2.service,文件内容如下[Unit]Description=OpenSSHserverdaemonDocumentation=man:sshd(8)man:sshd_config(5)After=network.targetsshd-keygen.serviceWants=sshd-keygen.service[服务]类型=notifyEnvironmentFile=/etc/sysconfig/sshdExecStart=/usr/sbin/sshd-D$OPTIONSExecReload=/bin/kill-HUP$MAINPIDKillMode=processRestart=on-failureRestartSec=42s[Install]WantedBy=multi-user.target因为需要重启一个新的服务,所以修改ExecStart这一行,读取新的配置文件sshd2_config,改成ExecStart=/usr/sbin/sshd-D$OPTIONS-f/etc/ssh/sshd2_config2.进入/etc/ssh/,将sshd_config复制到sshd2_config,修改端口行Port88883。运行命令systemctlreload重新加载配置4.运行命令systemctlstatussshd2.service查看状态5运行命令systemctlstartsshd2.service启动服务6.运行命令systemctlenablesshd2.service设置开机启动7、在另一台机器上登录sshfancy@ip-p8888登录注1,防火墙注2开放8888端口,建议用户在/etc/systemd/system/目录下创建自己的服务脚本。实际中,放在系统服务目录/usr/lib/systemd/system/下是没有问题的,看个人选择6.再举个例子,自己做一个服务。1.在/在root/bin/下创建一个shell脚本fancy_test.sh,并修改其权限,chmodu+xfancy_test.sh,内容如下#!/bin/bashlogdate=$(date+%s)logdir="/root/log/"logname=fancy.${logdate}.log#echo$lognametouch${logdir}${logname}表示运行服务时,在/root/log/目录下创建日志文件2.在/etc/systemd/在system/下创建启动脚本fancy_test.service,输入内容[Unit]Description=fancy_testserverdaemon[Service]Type=simpleExecStart=/root/bin/fancy_test.sh[Install]WantedBy=multi-user.target3。运行命令systemctlreload4。运行命令systemctlstartfancy_test.service5。此时你会看到在/root/log/目录下已经创建了一个日志文件。注意,我们的服务是最简单的,只执行几条命令,所以没有配置文件,也不会常驻内存,运行一次就结束了
