Mrli
别装作很努力,
因为结局不会陪你演戏。
Contacts:
QQ博客园

Linux下开机启动Python脚本

2021/10/22 Linux
Word count: 844 | Reading time: 4min

/etc/rc.local

将脚本写在/etc/rc.local文件
输入命令:sudo vi /etc/rc.local
exit 0上一行输入:python /usr/bin/python /home/pi/test.py
重启就可以看效果sudo reboot

当然,rc.local 文件需要有执行权限(默认没有)
$ sudo chmod +x /etc/rc.local
对于命令,最好是先which python查出命令路径,写命令时写绝对路径

/etc/init.d

写一个服务放到linux的/etc/init.d目录中

并且授权bash脚本chmod 755 /etc/init.d/mypython

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/bash
# chkconfig: 2345 66 36
# /etc/rc.d/init.d/opt/python
# description: spython
#
case "$1" in
start)
echo -n "Starting python: "
echo "---------------------------------------------------------------------------------" >>/var/log/python
date +"! %T %a %D : Starting python ." >>/var/log/python
echo "---------------------------------------------------------------------------------" >>/var/log/python
echo start
cd /root/finmonAgent/bin
./finmonAgent.py &
#sh /root/finmonAgent/startpy
echo "Done."
echo ""
echo "---------------------------------------------------------------------------------" >>/var/log/python
date +"! %T %a %D : Finished." >>/var/log/python
echo "---------------------------------------------------------------------------------" >>/var/log/python
touch /var/lock/subsys/python
;;
stop)
echo -n "Shutting Down python Listeners: "
echo "---------------------------------------------------------------------------------" >>/var/log/python
date +"! %T %a %D : Shutting Down python." >>/var/log/python
echo "---------------------------------------------------------------------------------" >>/var/log/python
echo "python"
killall -9 finmonAgent.py
echo "Done."
rm -f /var/lock/subsys/python
echo "Done."
echo "---------------------------------------------------------------------------------" >>/var/log/python
date +"! %T %a %D : Finished." >>/var/log/python
echo "---------------------------------------------------------------------------------" >>/var/log/python
;;
*)
echo "Usage: python { start | stop | restart }"
exit 1
esac
exit 0

/ect/profile

/ect/profile 文件是系统默认的主启动文件,系统上每个用户登录时都会执行;

linux 配置文件(启动文件、环境文件)启动顺序

1、登录shell

登录shell时,linux会按一定规则读取启动几个配置文件:

/ect/profile

$HOME/.bash_profile

$HOME/.bashrc

$HOME/.bash_login

$HOME/.profile

其中 /ect/profile 文件是系统默认的主启动文件,系统上每个用户登录时都会执行;

  • a、命令行登录和ssh登录,shell会按照以下顺序,运行第一个被找到的文件,余下的会被忽略:

$HOME/.bash_profile

$HOME/.bash_login

$HOME/.profile

上面没有 $HOME/.bashrc ,因为该文件一般通过其他文件运行。

  • b、图形界面登录,只加载 /ect/profile$HOME/.profile,其他的会被忽略。

对于 no-login shell,即图形界面打开的shell,只会读入 $HOME/.bashrc 文件,不会检查 /etc/.profile 等其他登录shell文件。


2、交互式shell

不是登录系统时启动,提供命令行提示符来输入命令。(不会访问 /etc/profile 文件,会检查 $HOME/.bashrc 文件)


3、非交互式shell

系统执行脚本时所用,没有命令行提示符。

1. linux将指令加入环境变量

在profile中添加PATH,这种方法对所有用户都是永久生效。

  1. 打开profile文件
1
vim /etc/profile
  1. 在profile文件的PATH中添加mongo指令。在PATH后面添加“:/usr/local/webserver/mongo/bin”,= 等号两边不能有任何空格。
1
PATH=``$PATH``:/usr/local/webserver/mongo/bin
  1. 执行指令,使profile修改立即生效。
1
source profile

在当前profile中添加PATH,这种方法对当前用户永久生效。与第二步类似,将profile替换为bash_profile。

1
$ vim ~/.bash_profile
1
PATH=``$PATH``:/usr/local/webserver/mongo/bin
1
$ source ~/.bash_profile

2. linux将指令加入开机启动

在/etc/rc.local中添加指令即可,在开机执行顺序中/etc/rc.local优先于/etc/profile,rc.local开机就会运行,/etc/profile被称为登录脚本,内含许多的全局变量,为用户登录所使用

1
/usr/local/webserver/mongodb/bin/mongod --dbpath=/data0/mongodb/data --logpath=/data0/mongodb/logs --logappend  --port=27017

Author: Mrli

Link: https://nymrli.top/2019/03/03/Linux下开机启动Python脚本/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
南京邮电大学java程序设计作业在线编程第三次作业
NextPost >
codeblocks中boost库安装
CATALOG
  1. 1. /etc/rc.local
  2. 2. /etc/init.d
  3. 3. /ect/profile
    1. 3.1. linux 配置文件(启动文件、环境文件)启动顺序
      1. 3.1.1. 1、登录shell
      2. 3.1.2. 2、交互式shell
      3. 3.1.3. 3、非交互式shell
  4. 4. 1. linux将指令加入环境变量
  5. 5. 2. linux将指令加入开机启动