linux -- 启动时启动服务或者执行命令

运行等级


  首先,我们需要知道Linux系统关于运行等级的知识。在不同的linux系统上(例如ubuntu和Fedora)这些数字与和所代表的意义可能不同,但主要的有以下几个:

  1. 单用户模式。

  2. 多用户模式。

  3. 网络多用户模式。

  4. 用于特殊目的的预留

  5. 添加显示管理器到等级3

  因此,对于普通的运行等级,服务使用等级3,这时不管X11是否启动,服务将自动启动。

服务,守护进程,服务器


  在Ubuntu中,可以使用sys-rc-conf命令简单的选择需要启动的已安装服务。

  在Fedora下,可以使用chkconfig达到同样的目的。

自定义脚本与应用


  当然也有其它的方法配置系统启动时需要自动运行的服务与应用程序。在/etc/rcX.d(X表示运行等级)目录下,有许多需要运行在每个等级下的命令/脚本/应用。可以把具有某种目的(维护/挂载文件系统等)的脚本链接到这个目录下,脚本就会在系统启动时执行。

  创建连接时,需要注意命名格式:Sxx或者Syy(xx和yy使用数字代替,例如K36mysqld和S64mysqld)。这些命令将根据数字的大小依次执行,字母S与K是告诉系统这是个启动或者结束命令(S->Start,
K->Kill)。就是说,在选择中运行等级下,系统启时执行S开头的连接,关闭时执行K开头的链接。

例如:


$ ls /etc/rc0.d/ -ano
total 8
drwxr-xr-x. 2 0 4096 Apr 4 21:47 .
drwxr-xr-x. 10 0 4096 Mar 26 22:55 ..
lrwxrwxrwx. 1 0 22 Dec 12 08:48 K01livesys-late -> ../init.d/livesys-late
lrwxrwxrwx. 1 0 20 Dec 12 08:12 K50netconsole -> ../init.d/netconsole
lrwxrwxrwx. 1 0 15 Apr 4 20:36 K80redis -> ../init.d/redis
lrwxrwxrwx. 1 0 17 Apr 4 21:47 K90network -> ../init.d/network
lrwxrwxrwx. 1 0 17 Dec 12 08:48 K99livesys -> ../init.d/livesys

另一种方法:


  可以在/etc/rc.local文件中加入需要执行的命令,当系统启动完成时,这些命令将被执行。

  就是说,这些命令将在运行等级3后被执行,MySql,
Apache等服务后启动完后运行。尽管这是一种简单的方案,但我还是推荐使用上一种方案,因为上一方案可以完全控制执行哪此命令,以及执行的时间和位置。当然这可能需要你有对Linux系统环境很好的了解。

引用

  1. Start a service or execute a script on boot on
    Ubuntu/Fedora

linux -- 启动时启动服务或者执行命令,布布扣,bubuko.com

时间: 2024-10-13 15:35:57

linux -- 启动时启动服务或者执行命令的相关文章

详解在 Linux 启动时,如何自动执行命令或脚本

我一直很好奇,在启动 Linux 系统并登录的过程中到底发生了什么事情.按下开机键或启动一个虚拟机,你就启动了一系列事件,之后会进入到一个功能完备的系统中,有时,这个过程不到一分钟.当你注销或者关机时,也是这样. 更有意思的是,在系统启动以及用户登录或注销时,还可以让系统执行特定的操作. 本文,我们将探讨一下在 Linux 操作系统中实现这些目标的传统方法. 注意:我们假定使用的是 Bash 作为登录及注销的主 Shell.如果你使用的是其他 Shell,那么有些方法可能会无效.如果有其他的疑问

JAVA调用系统命令或可执行程序--返回一个Runtime运行时对象,然后启动另外一个进程来执行命令

通过 java.lang.Runtime 类可以方便的调用操作系统命令,或者一个可执行程序,下面的小例子我在windows和linux分别测试过,都通过.基本原理是,首先通过 Runtime.getRuntime() 返回与当前 Java 应用程序相关的运行时对象,然后调用run.exec(cmd)  另启一个进程来执行命令(cmd为要执行的命令). 一.运行一个可执行程序 执行一个.exe的文件,或通过已安装的软件打开一个特定格式的文件,如word.chm或mp3等等. 1. 在window下

Linux引导时启动盘错误致使开不了机 跳坑历程

最近装了Kali+win10双系统,踩坑无数.在此记下自认为不容易跳出的一个坑,以此帮助后来的难兄难弟 不知大家是否在linux开机时卡过initramfs: 注意这一行:ALERT!/dev/sdb9 does not exist 在linux系统中,一切皆文件,当然也包括启动盘.会出现如图问题就是开机引导试图从一个错误的磁盘中启动系统. 这种情况这两天在我的电脑上出现了好多次: (1)刚装完Kali时:明明将Kali装在了sdb3上,引导配置文件(下文会告诉你在哪里编辑它)却默认告诉电脑:请

在web项目启动时,使用监听器来执行某个方法

在web项目中有很多时候需要在项目启动时就执行一些方法,而且只需要执行一次,比如:加载解析自定义的配置文件.初始化数据库信息等等,在项目启动时就直接执行一些方法,可以减少很多繁琐的操作. 这里写了个简单的实例,用的是监听器机制,创建一个类实现ServletContextListener 接口,实现里面的contextInitialized和contextDestroyed方法. 1 package com.test.listener; 2 3 import javax.servlet.Servl

Linux免交互登陆远程主机并执行命令(密钥对和Expect)

Linux下实现免交互登陆一般有两种: 1. SSH无密码认证方式 客户端使用ssh-keygen生成密钥对,将公钥复制到服务端(authorized_keys),SSH提供公钥登陆,当SSH访问服务端时,服务端先在本机寻找客户端的公钥,然后把客户端发来的公钥进行比较,如果一致,则用公钥加密给客户端,客户端再用私钥进行解密,实现加密所有传输的数据. 1>.在客户机上创建密钥对 # ssh-keygen -t rsa #一路回车 2>.登陆ssh服务器,创建.ssh目录及设置权限 # mkdir

C#通过SharpSSH库与Linux服务器建立SSH连接并执行命令

在Unity3D项目开发工具时需要用到SSH连接远程Linux服务器执行命令,找到SharpSSH链接库后,通过此方法就可使用.   /// <summary>     /// SSH登录远程Linux服务器,并运行指令     /// </summary>     /// <param name="host">远程Linux服务器IP或域名</param>     /// <param name="username&qu

centos5.5启动时改图形界面为命令行模式

昨天在做VMware虚拟化P2V时,由于被转物理机必须要和ESXI主机在同一网段(两个可以互访的不同网段能不能转我不知道,至少到目前为止我没有转成功过,只有改在同一网段才行),而现有环境是被转主机在50段,而esxi主机在10段,所以我就改了被转物理机的ip(被转物理机:centos5.5,数据库测试环境) 进系统,敲命令 [[email protected]~]vi /etc/sysconfig/network-scripts/ifcfg-eth0 [[email protected]~]/e

Linux崩溃时启动脚本获取进程相关信息

编写test.cpp #include <stdlib.h>#include <stdio.h>#include <exception>#include <string.h>#include <unistd.h> void terminate_handler(){ char cmdline[1024] = {0,}; sprintf(cmdline, "bash term.sh %d %d", getpid(), getppi

tomcat启动时启动窗口出现乱码的解决方案

工具/原料 一台安装了tomcat的电脑 方法/步骤 先来看看问题(图示),在tomcat的启动窗口打印的启动信息中包含了大量的中文乱码,虽然这些对tomcat本身的使用没有任何影响,但却非常碍眼,影响视觉效果!   那就要修复这个问题,对于乱码问题,本质原因就一个:字节流解码为字符串时,使用了错误的字符集(和编码所用字符集不一致)! 我们来到tomcat目录的conf子目录中,找到一个名为 "logging.properties" 的文件,打开这个文本文件,找到如下配置项: java