`

转:linux开机自动运行

 
阅读更多

 实现目标:在Linux启动时,自动运行位于普通用户test1根目录下的脚本程序test.py,该程序会在每次执行时自动向本地日志文件追加一条记录,源码如下: 

 

  from datetime import datetime 

 

  now=datetime.now() 

 

  f=open('test.log','a') 

 

  f.write('%s '%now) 

 

  f.close() 

 

  Linux在启动时,会自动执行/etc/rc.d目录下的初始化程序,因此我们可以把启动任务放到该目录下,有两种办法: 

 

  方案一: 

 

  1.因为其中的rc.local是在完成所有初始化之后执行,因此我们可以把启动脚本写到里面 

 

  2.用root账号登陆Linux,vi /etc/rc.d/rc.local编辑文件,在最后加入两行需要执行的脚本程序:

 

  cd /home/test1 --该步不可少,否则会提示没有权限打开'test.log'文件 

 

  su test1 -c "python /home/test1/test.py" --把要执行的命令作为一个参数传递级su 

 

  方案二: 

 

  1.init.d目录下都为可执行程序,他们其实是服务脚本,按照一定格式编写,Linux 在启动时会自动执行,类似Windows下的服务 

 

  2.用root帐号登录,vi /etc/rc.d/init.d/mystart,追加如下内容: 

 

  #!/bin/bash 

 

  #chkconfig:2345 80 05 --指定在哪几个级别执行,0一般指关机, 

 

  6指的是重启,其他为正常启动。80为启动的优先级,05为关闭的优先机 

 

  #description:mystart service 

 

  RETVAL=0 

 

  start(){ --启动服务的入口函数 

 

  echo -n "mystart serive ..." 

 

  cd /home/test1 

 

  su test1 -c "python /home/test1/test.py" 

 

  } 

 

  stop(){ --关闭服务的入口函数 

 

  echo "mystart service is stoped..." 

 

  } 

 

  case $1 in --使用case,可以进行交互式操作 

 

  start) 

 

  start 

 

  ;; 

 

  stop) 

 

  stop 

 

  ;; 

 

  esac 

 

  exit $RETVAL 

 

  3.运行chmod +r /etc/rc.d/init.d/mystart,使之可直接执行 

 

  4.运行chkconfig --add mystart,把该服务添加到配置当中 

 

  5.运行chkconfig --list mystart,可以查看该服务进程的状态 

 

  总结: 

 

  两种方案的的核心都是切换用户到test1,然后执行命令启动Python程序,做成服务的好处是可以定义多个交互命令,比如:start,stop,restart,reset...,在服务运行的过程中还可以做相应操作。最开始的时候,我按照一般的思路写了如下脚本,却怎么也执行不了: 

 

  su test1 --切换到test1用户 

 

  cd /home/test1 --切换到根目录 

 

  python test.py --执行python程序 

 

  exit --退出test1帐号 

 

  看起来好象一切都没错,但是发现只运行了第一行的命令,后面的都没有运行,直到退出test1用户后才发现好象执行完毕。分析原因,是因为Linux启动的时候是在root帐号下,执行su test1等于打开了一个新的shell脚本,因此下面的代码都在等着新的Shell脚本结束才能运行,就象在主程序里调用了一个子程序,而子程序是个死循环,一下出来来结果下面的要等死了。知道了发生的原因,那么解决的办法就相对简单了,就是在执行上述脚本程序时,不要离开本身的Shell。我们可以把执行命令做为su的一个参数传递进去,因为没有涉及到打开新的Shell,因此可以正常执行你期望的脚本程序,顺利实现开机自动启动指定的脚本程序

分享到:
评论

相关推荐

    SUSE Linux下开机自动运行脚本命令的方法

    ### SUSE Linux 下开机自动运行脚本命令的方法 #### 概述 在SUSE Linux(如openSUSE)中,为了实现系统启动时自动执行某些脚本或命令,需要了解和利用特定的启动脚本机制。本文将详细介绍openSUSE 11和10 SP2中的...

    ARM Linux系统开机自动运行特定应用的设置方法

    ARM Linux系统开机自动运行特定应用的设置方法 在ARM Linux系统中,实现开机自动运行特定应用是一项非常有用的技术。以下是实现该技术的详细步骤: 1. 首先,在开发板的根文件系统中找到/usr/etc/rc.local文件,该...

    Linux系统下开机自动运行命令的方法

    一般可以放在/etc/rc.d/rc.local文件中设置开机自动运行命令。文中介绍了在Bash和TCshell中的一些启动文件。

    (linux)下开机自动运行脚本以及定时任务

    ### Linux 下开机自动运行脚本及定时任务 在 Linux 系统中,为了实现系统启动时自动执行某些脚本或程序、以及设定周期性任务的需求,我们可以通过多种方式来达到目的。本文将详细介绍如何在 Linux 系统下设置开机自...

    java linux 开机 运行 web 服务

    在 Linux 系统中部署 Java Web 服务时,一个常见的需求是在系统启动时自动运行相应的 Web 服务器。这种自动化不仅能够提高系统的可用性和可靠性,还能减少人工干预的需求。本文将详细介绍如何配置 Linux 系统以便在...

    基于Qt的开机自启动(二)(Linux)

    在Linux系统中,实现基于Qt的应用程序开机自启动是一个实用且常见的需求,特别是在开发桌面应用时,用户希望软件能够在每次开机后自动运行。Qt是一个功能强大的C++图形用户界面库,它提供了丰富的API来帮助开发者...

    如何让Linux系统的程序在开机时自动运行

    Linux系统程序自动运行机制详解 Linux系统的启动过程可以分为几个阶段,init进程是所有进程的父进程,它读取/etc/inittab文件,执行rc.sysinit脚本,该脚本执行了许多任务,例如设置PATH变量、配置网络、启动swap...

    linux 开机自动启动脚本方法.doc

    Linux开机自动启动脚本方法 Linux 开机自动启动脚本方法是指在Linux系统启动时自动执行某些命令或脚本的方法。这种方法可以用于实现各种自动化任务,例如启动某些服务、设置系统参数、执行特定的命令等。 在Redhat...

    linux下设置开机自动启动程序.doc

    包括在 /etc/rc.d/rc.local 中增加启动命令、将 apache 注册为系统服务、在 Red Hat Linux 中自动运行程序、登录时自动运行程序、退出登录时自动运行程序、定期自动运行程序和定时自动运行程序等多种方法。...

    linux 谷歌浏览器开机自启并全屏

    在Linux系统上,为了实现Google Chrome浏览器的开机自启并以全屏模式运行,你需要遵循以下步骤。首先,确保你的系统已经安装了Python环境,因为后续的自动化脚本将会使用到Python。下面是安装Python 3.6.5的详细过程...

    linux让程序开机自动运行最简单的方法

    在Linux系统中,让程序开机自动运行是一项基本的需求,尤其对于服务器环境而言,确保服务在系统启动时自动启动是至关重要的。本篇文章将详细介绍一种简单有效的方法,适用于那些需要开机自启动的应用,如Apache、...

    Arm-linux 自定义开机启动程序,避开从桌面启动

    为了使自定义的程序能在系统启动时自动运行,需要进一步修改启动脚本: 1. 在`/usr/bin`目录下复制`startx`文件,并重命名为`MyUIstartx`。 2. 在`MyUIstartx`脚本中,添加一行代码指定Qt程序的路径,如`client="/...

    在linux下设置开机自动启动程序的方法借鉴.pdf

    Linux 下设置开机自动启动程序的方法可以分为五类:开机启动时自动运行程序、登录时自动运行程序、退出登录时自动运行程序、定期自动运行程序、定时自动运行程序。 开机启动时自动运行程序 在 Linux 下,可以通过...

    实现程序开机自动运行

    在计算机系统中,实现程序开机自动运行是一种常见的需求,它可以使特定的应用程序在操作系统启动时自动启动,无需用户手动操作。这种功能对于那些需要后台运行的服务或者需要在系统启动后立即可用的应用尤其有用,...

    修改程序开机是否自动运行demo

    在Windows操作系统中,程序可以设置为开机时自动运行,以便用户在每次启动计算机时无需手动启动它们。在本文中,我们将深入探讨如何使用MFC(Microsoft Foundation Classes)库来实现这个功能,特别是在修改注册表以...

    在linux下设置开机自动启动程序的方法.pdf

    Linux 自动启动程序设置方法 ...本文介绍了在 Linux 下设置开机自动启动程序的方法,包括开机启动时自动运行程序、登录时自动运行程序、退出登录时自动运行程序、定期自动运行程序和定时自动运行程序等方面的知识点。

    超级简单:linux下tomcat制作为服务,开机自启

    本教程将详细讲解如何在Linux环境下将Tomcat配置为系统服务,实现开机自动启动。 首先,我们需要理解Linux服务的概念。在Linux中,服务是后台运行的程序,它们在用户登录之前启动,提供各种系统级的功能。为了使...

    使Linux系统上的程序开机后自动运行.docx

    以下是关于如何使Linux系统上的程序开机后自动运行的详细说明: 1. **Linux启动流程** - **init进程**:Linux系统的启动是从init进程开始的,它是所有其他进程的祖先。init根据/etc/inittab配置文件来决定系统的...

    Magisk 开机运行模块

    【Magisk 开机运行模块】是一种在Android设备上利用Magisk框架实现的自启动脚本或服务,它能够在系统启动时自动执行特定的任务,比如安装Xposed框架、优化性能、增强安全性和隐私保护等。Magisk是知名的Android系统...

    UBUNTU添加程序开机自动启动的方法

    UBUNTU 添加程序开机自动启动的方法 ...UBUNTU 添加程序开机自动启动可以通过多种方法实现,包括开机启动时自动运行程序、登录时自动运行程序、退出登录时自动运行程序、定期自动运行程序和定时自动运行程序一次等。

Global site tag (gtag.js) - Google Analytics