- 浏览: 267475 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
1260533105:
uncaught invalidstateerror:Fail ...
WebSocket -
sh747665463:
压力好大啊
【转】如果你不知道接下去学什么,就看这个
实现目标:在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,因此可以正常执行你期望的脚本程序,顺利实现开机自动启动指定的脚本程序
发表评论
-
转:Linux内核参数详解
2018-07-20 17:34 520https://blog.csdn.net/yueguan ... -
ipmitool
2018-07-17 17:53 762一、开关机,重启 1. ... -
awk 分组统计
2018-04-15 09:27 1346cat * |grep 'java.lang.ClassNot ... -
numa关闭
2016-10-20 09:54 1556zone_reclaim_mode参数为1,numa并没有关 ... -
shell单引号,双引号,反引号与反斜杠
2016-07-03 09:40 1218单引号:强调是什么就是什么不替换任何东西,会忽略任何引用值, ... -
shell 判断条件
2016-07-03 09:26 421前言: 无论什么编程语言都离不开条件判 ... -
转:linux 文件系统IO性能优化
2016-05-23 08:53 978对于LINUX SA来说,服 ... -
yum install 安装路径
2016-03-08 19:07 643一般是 /usr/local 一般一个软件是要复制多个文件 ... -
转:linux系统mysql安装后文件分布情况
2016-01-19 20:31 0MySQL安装完成后不象SQL Server默认安装在一个目 ... -
shell控制语句
2016-01-09 09:50 495linux shell有一套自己的流程控制语句,其中包括条件 ... -
shell for 循环
2016-01-09 09:40 0关于shell中的for循环用法很多,一直想总结一下,今天网 ... -
posrt 排序工具并行工作--快
2012-11-05 14:28 907一个文件n列,假设需要按照文件的第2列排序,第二列是in ... -
清理linux 系统缓存
2012-10-31 16:52 929echo 3 > /proc/sys/vm/drop_c ... -
关闭SELinux
2012-07-22 19:13 0关闭SELinux的方法: 修改/etc/seli ... -
实例详细说明linux下去除重复行命令uniq
2012-06-25 18:28 1321一、uniq干什么用的 linux下去除文本重复行的命令 ... -
grep+sed 全文件夹替换
2012-06-17 21:25 1345grep aaa -rl ./test |xargs s ... -
vim 查找替换
2012-06-04 16:58 896vi/vim 中可以使用 :s ... -
vi常用命令
2012-05-22 20:11 9011、复制多行,并粘贴 ... -
linux多文件替换关键字
2012-06-04 16:57 1046现在网上这样的方法只有两种,一种是Mahuinan法,一种是S ... -
TCP 参数
2012-01-16 15:25 2443net.ipv4.tcp_max_tw_buckets ...
相关推荐
ARM Linux系统开机自动运行特定应用的设置方法 在ARM Linux系统中,实现开机自动运行特定应用是一项非常有用的技术。以下是实现该技术的详细步骤: 1. 首先,在开发板的根文件系统中找到/usr/etc/rc.local文件,该...
### SUSE Linux 下开机自动运行脚本命令的方法 #### 概述 在SUSE Linux(如openSUSE)中,为了实现系统启动时自动执行某些脚本或命令,需要了解和利用特定的启动脚本机制。本文将详细介绍openSUSE 11和10 SP2中的...
一般可以放在/etc/rc.d/rc.local文件中设置开机自动运行命令。文中介绍了在Bash和TCshell中的一些启动文件。
### Linux 下开机自动运行脚本及定时任务 在 Linux 系统中,为了实现系统启动时自动执行某些脚本或程序、以及设定周期性任务的需求,我们可以通过多种方式来达到目的。本文将详细介绍如何在 Linux 系统下设置开机自...
在 Linux 系统中部署 Java Web 服务时,一个常见的需求是在系统启动时自动运行相应的 Web 服务器。这种自动化不仅能够提高系统的可用性和可靠性,还能减少人工干预的需求。本文将详细介绍如何配置 Linux 系统以便在...
在Linux系统中,实现基于Qt的应用程序开机自启动是一个实用且常见的需求,特别是在开发桌面应用时,用户希望软件能够在每次开机后自动运行。Qt是一个功能强大的C++图形用户界面库,它提供了丰富的API来帮助开发者...
Linux系统程序自动运行机制详解 Linux系统的启动过程可以分为几个阶段,init进程是所有进程的父进程,它读取/etc/inittab文件,执行rc.sysinit脚本,该脚本执行了许多任务,例如设置PATH变量、配置网络、启动swap...
包括在 /etc/rc.d/rc.local 中增加启动命令、将 apache 注册为系统服务、在 Red Hat Linux 中自动运行程序、登录时自动运行程序、退出登录时自动运行程序、定期自动运行程序和定时自动运行程序等多种方法。...
为了使自定义的程序能在系统启动时自动运行,需要进一步修改启动脚本: 1. 在`/usr/bin`目录下复制`startx`文件,并重命名为`MyUIstartx`。 2. 在`MyUIstartx`脚本中,添加一行代码指定Qt程序的路径,如`client="/...
在Linux系统上,为了实现Google Chrome浏览器的开机自启并以全屏模式运行,你需要遵循以下步骤。首先,确保你的系统已经安装了Python环境,因为后续的自动化脚本将会使用到Python。下面是安装Python 3.6.5的详细过程...
在Linux系统中,让程序开机自动运行是一项基本的需求,尤其对于服务器环境而言,确保服务在系统启动时自动启动是至关重要的。本篇文章将详细介绍一种简单有效的方法,适用于那些需要开机自启动的应用,如Apache、...
Linux 下设置开机自动启动程序的方法可以分为五类:开机启动时自动运行程序、登录时自动运行程序、退出登录时自动运行程序、定期自动运行程序、定时自动运行程序。 开机启动时自动运行程序 在 Linux 下,可以通过...
在计算机系统中,实现程序开机自动运行是一种常见的需求,它可以使特定的应用程序在操作系统启动时自动启动,无需用户手动操作。这种功能对于那些需要后台运行的服务或者需要在系统启动后立即可用的应用尤其有用,...
在Windows操作系统中,程序可以设置为开机时自动运行,以便用户在每次启动计算机时无需手动启动它们。在本文中,我们将深入探讨如何使用MFC(Microsoft Foundation Classes)库来实现这个功能,特别是在修改注册表以...
【Magisk 开机运行模块】是一种在Android设备上利用Magisk框架实现的自启动脚本或服务,它能够在系统启动时自动执行特定的任务,比如安装Xposed框架、优化性能、增强安全性和隐私保护等。Magisk是知名的Android系统...
Linux 自动启动程序设置方法 ...本文介绍了在 Linux 下设置开机自动启动程序的方法,包括开机启动时自动运行程序、登录时自动运行程序、退出登录时自动运行程序、定期自动运行程序和定时自动运行程序等方面的知识点。
本教程将详细讲解如何在Linux环境下将Tomcat配置为系统服务,实现开机自动启动。 首先,我们需要理解Linux服务的概念。在Linux中,服务是后台运行的程序,它们在用户登录之前启动,提供各种系统级的功能。为了使...
以下是关于如何使Linux系统上的程序开机后自动运行的详细说明: 1. **Linux启动流程** - **init进程**:Linux系统的启动是从init进程开始的,它是所有其他进程的祖先。init根据/etc/inittab配置文件来决定系统的...
UBUNTU 添加程序开机自动启动的方法 ...UBUNTU 添加程序开机自动启动可以通过多种方法实现,包括开机启动时自动运行程序、登录时自动运行程序、退出登录时自动运行程序、定期自动运行程序和定时自动运行程序一次等。