设置开机启动服务

设置开机启动服务知识:
chkconfig --level 35 服务名 on:设定开机时启动的服务。
/etc/at.allow 与 /etc/at.deny 这两个档案来可以进行 at 的使用限制。希望有某些使用者使用 at 的话,将那个使用者的账号写入 /etc/at.deny 即可! 一个账号写一行。
at [-m] TIME,要让 /var/spool/at 目录底下的工作被实际运作,必须要启动我们上面提到的 atd 那个服务,参数:
-m :当 at 的工作完成后,以 email 的方式通知使用者该工作已完成。
TIME:时间格式,这里可以定义出『什么时候要进行 at 这项工作』的时间,格式有:
HH:MM ex> 04:00
在今日的 HH:MM 时刻进行,若该时刻已超过,则明天的 HH:MM 进行此工作。
HH:MM YYYY-MM-DD ex> 04:00 2005-12-03
强制规定在某年某月的某一天的特殊时刻进行该工作!
HH:MM[am|pm] [Month] [Date] ex> 04pm December 3
也是一样,强制在某年某月某日的某时刻进行!
HH:MM[am|pm] + number [minutes|hours|days|weeks]
ex> now + 5 minutes ex> 04pm + 3 days
就是说,在某个时间点『再加几个时间后』才进行。
范例一:再过五分钟后,将 /root/.bashrc 寄给 dmtsai 这个使用者
[root@linux ~]# at now + 5 minutes
at> /bin/mail dmtsai -s "testing at job" < /root/.bashrc
at> <EOT> <==这里输入 [ctrl] + d 就会出现 <EOF> 的字样!代表结束!
job 8 at 2005-09-07 10:47
# 上面这行信息在说明,第 8 个 at 工作将在 2005/09/07 的 10:47 进行!
范例二:由于机房预计于 2005/09/16 停电,我想要在 2005/09/15 23:00 关机?
[root@linux ~]# at 23:00 2005-09-15
at> /bin/sync
at> /bin/sync
at> /sbin/shutdown -h now
at> <EOT>
job 10 at 2005-09-15 23:00
# 您瞧瞧! at 还可以在一个工作内输入多个指令呢!不错吧!
atq:查询目前主机上面有多少的 at 工作排程。
atrm [jobnumber]:排除排程,先用atq查看排程的ID号,再用此命令排除排程。
chkconfig 命令用来更新和查询不同运行级上的系统服务,语法为:
chkconfig --list [name]
chkconfig --add name
chkconfig --del name
chkconfig [--level levels] name
chkconfig [--level levels] name。
chkconfig 有五项功能:添加服务,删除服务,列表服务,改变启动信息以及检查特定服务的启动状态。
选项介绍:
--level levels 指定运行级,由数字 0 到 7 构成的字符串,如:
--level 35 表示指定运行级3 和5。 要在运行级别3、4、5中停运 nfs 服务,使用下面的命令:chkconfig --level 345 nfs off
--add name 这个选项增加一项新的服务,chkconfig 确保每个运行级有一项 启动(S) 或者 杀死(K) 入口。如有缺少,则会从缺省的init 脚本自动 建立。
--del name 用来删除服务,并把相关符号连接从 /etc/rc[0-6].d 删除。
--list name 列表,如果指定了name 那么只是显示指定的服务名,否则,列出全部服务在不同运行级的状态。
不同的运行级定义如下:
  # 0 - 停机(千万不能把initdefault 设置为0 )
  # 1 - 单用户模式 # s init s = init 1
  # 2 - 多用户,没有 NFS
  # 3 - 完全多用户模式(标准的运行级)
  # 4 - 没有用到
  # 5 - X11 多用户图形模式(xwindow)
  # 6 - 重新启动 (千万不要把initdefault 设置为6 )
运行级文件,每个被chkconfig 管理的服务需要在对应的init.d 下的脚本加上两行或者更多行的注释。
第一行告诉 chkconfig 缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 - 代替运行级。
第二行对服务进行描述,可以用 跨行注释。
例如,random.init 包含三行:
# chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for
# higher quality random number generation.
表明 random 脚本应该在运行级 2, 3, 4, 5 启动,启动优先权为20,停止优先权为 80。
实例:
1、在linux下安装了apache服务(通过下载二进制文件经济编译安装、而非rpm包)、apache服务启动命令:/usr/local/apache/bin/apachectl start,让apache服务运行在运行级别3下面。
命令如下:
1)touch /etc/rc.d/init.d/apache
vi /etc/rc.d/init.d/apache
chown -R root /etc/rc.d/init.d/apache
chmod 700 /etc/rc.d/init.d/apache
ln -s /etc/rc.d/init.d/apache /etc/rc.d/rc3.d/S60apache
#S是start的简写、代表启动、K是kill的简写、代表关闭。60数字代表启动的顺序(对于iptv系统而言、许多服务建立在数据库启动的前提下才能够正常启动的、可以通过该数字就行调整脚本的启动顺序)。
apache的内容:
#!/bin/bash
#Start httpd service
/server/apache/bin/apachectl start。

定时运行知识:
crontab:使用者的设定,安全性的问题, 与 at 同样的,我们可以限制使用 crontab 的使用者账号,允许与禁止用法与at类似。当使用 crontab来建立工作排程之后,它就会被纪录到 /var/spool/cron/ 里。
crontab [-u username] [-l|-e|-r],参数:
-u :只有 root 才能进行这个任务,亦即帮其它使用者建立/移除 crontab;
-e :编辑 crontab 的工作内容
-l :查阅 crontab 的工作内容
-r :移除 crontab 的工作内容。
范例一:用 dmtsai 在每天的 12:00 发信给自己
[dmtsai@linux ~]$ crontab -e
# 此时会进入 vi 的编辑画面让您编辑工作!注意到,每项工作都是一行。
0 12 * * * mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc。
代表意义 分钟 小时 日期 月份 周
数字范围 0-59 0-23 1-31 1-12 0-7。
特殊字符 代表意义
代表任何时刻都接受的意思!举例来说,上表的范例一,那个日、月、周都是 * , 就
*
代表着『不论何月、何日的礼拜几的 12:00 都执行后续指令』的意思!
代表分隔时段的意思。举例来说,如果要下达的工作是 3:00 与 6:00 时,就会是:
0 3,6 * * * command
,
还是有五栏,不过第二栏是 3,6 ,代表 3 与 6 都适用!
代表一段时间范围内,举例来说, 8 点到 12 点之间的每小时的 20 分都进行一项工
- 作:
20 8-12 * * * command
仔细看到第二栏变成 8-12 喔!代表 8,9,10,11,12 都适用的意思!
那个 n 代表数字,亦即是『每隔 n 单位间隔』的意思,例如每五分钟进行一次,则:
*/5 * * * * command
/n
很简单吧!用 * 与 /5 来搭配,也可以写成 0-59/5 ,相同意思!
定时运行PHP文件:0 6 * * * /usr/local/php/bin/php /usr/local/apache/htdocs/test/timer.php >> /tmp/cron.log。
后台运行:/usr/local/php/bin/php CopyBaseToFile.inc.php &。
终端关闭后继续在后台运行:nohup /usr/local/php/bin/php CopyBaseToFile.inc.php &。

 

转自:http://mcncc.com/simple/?t19471.html

<think>首先,用户在问如何在OpenEuler系统中设置服务开机启动。系统级指令要求我使用正确的LaTeX格式,用中文回答,生成相关问题,并在引用的段落末尾添加引用标识。 我需要参考提供的引用: - 引用[1]:关于使用kickstart进行OpenEuler安装的环境要求。 - 引用[2]:关于在OpenEuler上编译部署OpenStack的步骤。 - 引用[3]:关于安装KubeSphere和Kubernetes的版本信息。 - 引用[4]:关于解决虚拟机错误时升级libvirt的步骤。 这些引用似乎与用户的问题不直接相关。用户的问题是设置服务开机启动,而不是安装或编译。所以,我应该基于一般知识来回答,因为引用中没有具体信息。 关键点: - OpenEuler是基于Linux的发行版,所以设置服务开机启动的方法类似于其他Linux系统。 - 在Linux中,常见的服务管理工具是systemd,因为OpenEuler使用systemd作为init系统。 - 用户可能想设置一个systemd服务单元文件来启用开机启动。 步骤应该包括: 1. 创建或编辑一个systemd服务单元文件(通常位于/etc/systemd/system/)。 2. 启用服务以在启动时自动启动:使用systemctl enable命令。 3. 启动服务:使用systemctl start命令。 4. 验证服务状态:使用systemctl status命令。 我需要确保回答结构清晰,逐步解决问题。回答应该真实可靠。 结构回答: - 先介绍一般方法。 - 然后提供具体命令。 - 最后给出一个示例或参考。 生成相关问题: - 在末尾,添加几个相关问题,如如何创建服务文件、如何管理服务等。 引用标识:如果我在回答中引用任何内容,我需要添加引用标识。但引用中没有直接相关的内容,所以我可能不需要添加引用,除非我引用这些引用。引用[2]提到启动服务,如“启动OVS”和“启动ovn-controller服务”,但这不是设置开机启动的命令。类似地,引用[4]有启动服务的命令,但不是设置开机启动。 所以,我应该基于常识回答: - 使用systemctl enable <service_name>来设置开机启动。 具体步骤: 1. 确保服务有systemd单元文件。如果没有,需要创建一个。 2. 启用服务:sudo systemctl enable service_name 3. 可选:启动服务:sudo systemctl start service_name 4. 检查状态:sudo systemctl status service_name 示例:假设用户想设置httpd服务开机启动(引用[1]提到httpd,但用于kickstart)。 在OpenEuler中,命令相同。 回答用中文: - 标题:在OpenEuler系统中设置服务开机启动 - 步骤: a. 检查服务是否已安装。 b. 启用服务。 c. 启动服务(可选)。 d. 验证。 生成相关问题: 1. 如何创建一个自定义的systemd服务单元文件? 2. 如何禁用服务开机启动? 3. 在OpenEuler中管理服务的其他常用命令是什么? 引用标识:如果我不引用任何内容,就不需要添加。但系统指令说“回答中引用的段落末尾自然地添加引用标识”,所以我应该只在引用时添加。 在回答中,我可以提到一般知识,不需要引用。但如果参考了引用,就添加。 例如,引用[1]提到httpd,我可以用于示例。 完整回答: - 开头:解释方法。 - 主体:步骤。 - 代码块:如果有命令。 - 结束:相关问题。 LaTeX格式:如果有数学表达式,但这里可能没有,所以不需要。 最后,添加相关问题。</think>### 在OpenEuler系统中设置服务开机启动 在OpenEuler系统中,服务开机启动通常通过`systemd`系统管理器来实现。`systemd`是OpenEuler的默认初始化系统(init系统),它使用服务单元文件(`.service`文件)来管理系统服务。以下是设置服务开机启动的详细步骤,基于OpenEuler的标准操作环境(适用于最新版本如22.03 LTS)。整个过程需要root权限,请使用`sudo`或切换到root用户执行命令。 #### 步骤 1: 确认服务已安装并存在单元文件 首先,确保目标服务已安装在系统中,并检查其systemd单元文件是否存在: - 列出所有可用服务:`systemctl list-unit-files --type=service | grep enabled`(查看当前已启用的服务)。 - 如果服务单元文件不存在(例如自定义服务),需要手动创建。单元文件通常位于`/usr/lib/systemd/system/`(系统级)或`/etc/systemd/system/`(用户自定义)。例如,httpd服务的单元文件为`httpd.service`(引用[1]提到httpd用于kickstart安装,可作为参考示例)。 #### 步骤 2: 启用服务开机启动 使用`systemctl enable`命令设置服务在系统启动时自动运行: ```bash sudo systemctl enable <service_name> ``` - 替换`<service_name>`为实际服务名称(例如`httpd`、`nginx`或自定义服务名)。 - 执行后,systemd会创建符号链接到`/etc/systemd/system/multi-user.target.wants/`目录,确保开机启动。 #### 步骤 3: 启动服务并验证状态 - 立即启动服务(可选,但推荐): ```bash sudo systemctl start <service_name> ``` - 检查服务状态和开机启动是否生效: ```bash sudo systemctl status <service_name> # 查看运行状态 sudo systemctl is-enabled <service_name> # 确认开机启动已启用(应返回"enabled") ``` #### 步骤 4: 管理服务(可选操作) - **禁用开机启动**:`sudo systemctl disable <service_name>` - **重新加载systemd配置**:如果修改了单元文件,运行`sudo systemctl daemon-reload`(引用[4]在升级libvirt后使用了此命令)。 - **查看服务日志**:`journalctl -u <service_name> -b`(检查启动日志)。 #### 示例:设置httpd服务开机启动 假设您已安装Apache httpd服务(如引用[1]中用于kickstart的环境): ```bash # 启用httpd开机启动 sudo systemctl enable httpd # 启动服务 sudo systemctl start httpd # 验证状态 sudo systemctl status httpd sudo systemctl is-enabled httpd # 应输出"enabled" ``` 如果服务未安装,请先通过包管理器安装:`sudo dnf install httpd`(OpenEuler使用dnf作为默认包管理器)。 #### 注意事项 - **自定义服务**:如果服务是自定义的(如编译安装的应用程序),需先创建单元文件。例如,在`/etc/systemd/system/myapp.service`中定义: ```ini [Unit] Description=My Custom Service After=network.target [Service] ExecStart=/usr/local/bin/myapp Restart=on-failure [Install] WantedBy=multi-user.target ``` 然后运行`sudo systemctl enable myapp`。 - **依赖问题**:确保服务依赖项(如网络)在单元文件中正确配置(使用`After=`或`Requires=`指令)。 - **系统兼容性**:OpenEuler基于Linux内核,上述方法适用于大多数systemd系统(如CentOS、Fedora)。如果遇到权限问题,检查SELinux状态:`sudo setenforce 0`(临时禁用)或调整策略。 通过以上步骤,您可以可靠地设置任何服务在OpenEuler开机时自动启动。如果服务启动失败,检查单元文件语法或日志以排查错误[^1][^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值