精华内容
下载资源
问答
  • Jetson Nano开机自动启动Python程序

    千次阅读 2020-04-08 15:26:18
    Jetson Nano开机自动启动python程序


    Jetson Nano的系统是Ubuntu,桌面默认是gnome。所以可以使用gnome去实现开机启动python程序。
    这里通过使用shell脚本间接调用python

    创建一个shell脚本

    例如start.sh。

    touch start.sh		# 新建一个shell脚本
    

    编辑shell脚本

    • 编辑shell脚本
    gedit start.sh		# 编辑shell脚本
    

    shell脚本里可以输入启动.py文件的语句,例如:

    /usr/bin/python3 /home/start.py		# 使用指定目录下的python解释器运行指定目录下的python脚本
    
    • 修改shell脚本权限
    sudo chmod 777 /home/start.sh		# 修改脚本权限
    

    添加开机启动项

    • 按一下Windows键,搜索Startup Application

    Startup Application Preferences

    • Add一个项目
      第二个字段填上:
    gnome-terminal -x /home/start.sh		# 开机启动start.sh文件
    

    Add Startup Program
    点击Add(添加),这样就可以开机启动python程序啦。

    Tips:
    通过shell脚本间接运行python脚本会遇到各种找不到文件的问题(实际上这个文件是存在的),这个时候只要把要引用的文件的相对地址改为绝对地址就好了。

    展开全文
  • 文章目录:1 通过系统界面设置开机自动运行程序1.1 windows系统设置开机自动运行命令1.2 Linux开机设置开机自动运行命令2 Linux中设置开机自启动python脚本程序2.1 方法一:在`/etc/rc.local`中添加要运行的脚本命令...

    想要做到某个程序在开机的时候自动启动,就要知道系统中哪些程序或者配置文件,是每次开机都是要先运行一遍的,我们只需要想办法把程序运行的命令放到指定的位置,就可以伴随着开机后自动运行!

    1 通过系统界面设置开机自动运行程序

    1.1 windows系统设置开机自动运行命令

    在windows系统中,可以通过任务计划程序,把需要运行的程序命令,或者要运行的应用程序添加到一个任务中,这样在每次开机或指定的时间就可以运行该程序,具体请参考这篇博客

    1.2 Linux开机设置开机自动运行命令

    当然linux上也有可视化的界面,设置每次开机自动启动的应用或程序!

    1、这是我的Mint系统(Ubuntu系统改造后的系统)中设置界面中的开机自启动程序
    在这里插入图片描述

    2、然后选择自定义命令

    在这里插入图片描述

    3、然后把你要运行的命令或者程序填写进入即可(当然你也可以写成一个bash脚本)然后在bash脚本中定义要运行的程序!
    在这里插入图片描述

    注意:

    Jetson NanoJetson Xavier NX中并没有该设置界面,其他的嵌入式设备我也没有尝试,如果你设备也没有类似的设置界面,那就继续往下看吧!

    2 Linux中设置开机自启动python脚本程序

    先说明,我要开机运行如下的程序,让每次程序开机后就自动播放一段视频,我脚本程序的路径为:/home/zhihui/test_boot_up.py

    python3 test_boot_up.py

    在这里插入图片描述

    注意:

    • 下面的所有linux开机自启动python程序的方法,我最终都是在Jetson nano上测试的!!!

    2.1 方法一:在/etc/rc.local中添加要运行的脚本命令

    1、用vim打开/etc/rc.local文件

    sudo vim /etc /rc.local

    2、在/etc/rc.local文件中添加你要运行的命令

    #!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.
    
    /usr/bin/python3 /home/zhihui/test_boot_up.py &
    exit 0
    

    注意:

    • 自启动的脚本命令要放到exit 0之前
    • &:表示让命令在后台运行,不在命令行显示,当然你不加&也是可以的
    • 我的/etc目录下并没有rc.local文件,而且我尝试这种方法在Jetson nano上是没有成功的,大家可以自行尝试

    2.2 方法二:在/etc/profile中添加要运行的脚本

    2.2.1 在/etc/profile中添加要运行的脚本

    1、先创建一个脚本文件:/home/zhihui/start.sh

    vim ~/start.sh

    当然,这个文件你可以放在任意的位置,记住start.sh文件的路径即可!

    2、在 start.sh文件中添加要开机自启动的脚本命令

    #!/bin/bash
    sudo python3  /home/zhihui/test_boot_up.py
    

    3、给start.sh文件加上可执行权限

    sudo chmod +x /home/zhihui/test_boot_up.py

    4、把/home/zhihui/start.sh添加到/etc/profile文件的末尾

    sudo vim /etc/profile

    然后把/home/zhihui/start.sh添加到配置文件的末尾

    5、重新启动,看看程序有没有自动启动

    sudo reboot

    注意:

    • 我用这种方法可以成功自启动程序,但是有点小问题,每次打开后视频是在播放,但是界面不能够操作
    • 还有,这种方法你需要管理员权限

    2.2.2 知识拓展

    1、登录shell之后启会被运行的配置文件

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

    /ect/profile
    
    $HOME/.bash_profile
    
    $HOME/.bashrc
    
    $HOME/.bash_login
    
    $HOME/.profile
    

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

    • 1)命令行登录和ssh登录,shell会按照以下顺序,运行第一个被找到的文件,余下的会被忽略:
    $HOME/.bash_profile
    
    $HOME/.bash_login
    
    $HOME/.profile
    

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

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

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

    2、开机自动启动的服务程序

    linux随机启动的服务程序都在/etc/init.d这个文件夹里,里面的文件全部都是脚本文件:

    在这里插入图片描述

    另外在/etc这个文件夹里还有诸如名为rc1.d, rc2.d一直到rc6.d文件夹,这些都是linux不同的runlevel,我们一般进入的X windows多用户的运行级别是第5级,也就是rc5.d,在这个文件夹下的脚本文件就是运行第5级时要随机启动的服务程序。需要注意的是,在每个rc (1-6).d文件夹下的文件其实都是/etc/init.d文件夹下的文件的一个软连接,也就是说,在 /etc/init.d文件夹下是全部的服务程序,而每个rc(1-6).d只链接它自己启动需要的相应的服务程序! 还 需要注意的一点是,在rc5.d里,每个链接的名字都是以S或者K开头的,S开头的表示是系统启动是要随机启动的,K开头的是不随机启动的。这 样,你就可以知道,如果我要哪个服务随机启动,就把它名字第一个字母K改成S就可以了,当然,把S改成K后,这个服务就不能随机启动了。Ubuntu系统运行级别: 0 系统停机状态 1 单用户或系统维护状态 2~5 多用户状态 。

    在这里插入图片描述

    2.3 方法三:添加到桌面自动启动程序中

    1、创建文件:~/.config/autostart/MyScript.desktop

    注意:

    如果没有autosart目录就先创建一个目录

    2、然后把要开机运行的命令添加到~/.config/autostart/MyScript.desktopExec中即可,如下:

    [Desktop Entry]
    Encoding=UTF-8
    Name=MyScript
    Comment=MyScript
    Icon=gnome-info
    Exec=python3 /home/zhihui/test_boot_up.py
    Terminal=false
    Type=Application
    Categories=
    
    X-GNOME-Autostart-enabled=true
    X-GNOME-Autostart-Delay=0
    

    3、然后重启一下,看看是否会自动启动程序

    sudo reboot

    • 推荐使用这种方法
    • 我使用这种方法可以成功运行程序!

    2.3 方法四:使用crontab命令

    是用crontab -e命令,打开配置文件,然后在配置文件中加入要运行的命令:

    @reboot python3 /home/zhihui/test_boot_up.py

    也可以加上睡眠时间:

    @reboot (sleep 30; python3 /home/zhihui/test_boot_up.py)

    参考:https://www.jianshu.com/p/06b140e598e3
    参考:https://blog.csdn.net/qq_29113041/article/details/78675396
    参考:https://www.xz577.com/j/24992.html
    参考:https://stackoverflow.com/questions/24518522/run-python-script-at-startup-in-ubuntu
    参考:https://raspberrypi.stackexchange.com/questions/4123/running-a-python-script-at-startup

    欢迎大家关注笔者,你的关注是我持续更博的最大动力


    原创文章,转载告知,盗版必究

    微信:suihailiang0816
    QQ:931762054
    wx公众号:仰望星空的小随
    展开全文
  • 树莓派ubuntu MATE 16.04开机自动启动python 备料 写个最简单的python /home/robot/zzz/zzz.py import time c=1 while 1: time.sleep(1) c=c+1 print(c) 运行 robot@robot:~/zzz$ python zzz.py 2 3 4 5 6...

    树莓派ubuntu MATE 16.04开机自动启动python

    备料


    写个最简单的python
    /home/robot/zzz/zzz.py

    import time
    c=1
    while 1:
        time.sleep(1)
        c=c+1
        print(c)

    运行

    robot@robot:~/zzz$ python zzz.py
    2
    3
    4
    5
    6
    7
    8


     

    创建sh文件run.sh,内容如下

    #!/bin/sh
    python /home/robot/zzz/zzz.py

    更改权限

    sudo chmod -R 777 zzz

    运行sh测试
     

    robot@robot:~/zzz$ . run.sh
    2
    3
    4
    5
    6
    7
    8
    9
    10


    方法一:修改rc.local文件/etc/rc.local

    #!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.
    sh '/home/robot/zzz/run.sh'
    exit 0


    注意修改权限才能编辑

    robot@robot:/etc$ sudo chmod 777 rc.local
    [sudo] password for robot:
    robot@robot:/etc$ ls -l rc.local
    -rwxrwxrwx 1 root root 306 2月  11  2017 rc.local
    robot@robot:/etc$ sudo chmod 755 rc.local
    robot@robot:/etc$ ls -l rc.local
    -rwxr-xr-x 1 root root 306 2月  11  2017 rc.local
    robot@robot:/etc$ sudo chmod 777 rc.local
    robot@robot:/etc$


    方法二,显示终端的配置方式X-MATE-Autostart  或X-GNOME-Autostart

    再创建个sh文件terminal_run.sh

    #!/bin/sh
    sleep 1
    gnome-terminal -x bash -c "sh /home/robot/zzz/run.sh;exec bash;"
    exec bash;

     可以参考 下面进行操作

    System->ControlCenter->Personal->StartupApplications添加启动项,命令选择terminal_run.sh

    https://blog.csdn.net/mao0514/article/details/54967215各种桌面环境下设置开机自启动应用程序的方法

    这个操作实际上是在下面这个目录添加了.desktop的配置文件

    robot@robot:~/.config/autostart

    autostart目录下创建文件内容如

    #!/usr/bin/env xdg-open
    [Desktop Entry]
    Type=Application
    Exec=/home/robot/zzz/terminal_run.sh
    Hidden=false
    X-MATE-Autostart-enabled=true
    Name[en_US]=zzz
    Name=zzz
    Comment[en_US]=zzz
    Comment=zzz

    或者

    [Desktop Entry]
    Type=Application
    Exec=/home/robot/zzz/terminal_run.sh
    Hidden=false
    NoDisplay=false
    X-GNOME-Autostart-enabled=true
    Name[en_US]=zzz123123
    Name=zzz123123
    Comment[en_US]=zzz123123
    Comment=zzz123123

    归根结底这两个是一回事,根据系统环境选择一个咯

    reboot一下

    弹出了一个终端如图

    ps看看

    
    robot@robot:~/Desktop$ ps xa
      PID TTY      STAT   TIME COMMAND
        1 ?        Ss     0:06 /sbin/init splash
        2 ?        S      0:00 [kthreadd]
        3 ?        S      0:00 [ksoftirqd/0]
    ...
     1085 ?        Ss     0:00 /bin/sh -e /etc/rc.local start
     1096 ?        S      0:00 /usr/bin/dbus-launch --exit-with-session /usr/bin/im-
     1097 ?        S      0:00 sh /home/robot/zzz/run.sh
     1110 ?        Ss     0:00 /usr/bin/dbus-daemon --fork --print-pid 5 --print-add
     1264 ?        S      0:00 python /home/robot/zzz/zzz.py
    ...
     1656 ?        Sl     0:02 /usr/lib/gnome-terminal/gnome-terminal-server
     1662 pts/1    Ss+    0:00 bash -c sh /home/robot/zzz/run.sh;exec bash;
     1663 pts/1    S+     0:00 sh /home/robot/zzz/run.sh
     1666 pts/1    S+     0:00 python /home/robot/zzz/zzz.py

    可见
    一个是 rc.local 创建的进程,看不到终端窗口
    一个是gnome-terminal创建的进程,能看到终端窗口

    网上帖子很多,引用几篇以供参考
    https://ubuntuqa.com/article/1352.html
    如何在启动时运行“rc.local”?
    https://blog.csdn.net/davidhzq/article/details/102725116
    Ubuntu桌面启动后自动执行指定的命令或程序的三种方法
    https://blog.csdn.net/m0_37827405/article/details/86060816
    Ubuntu图形界面实现开机自动运行python程序(.py)
    https://blog.csdn.net/u012899335/article/details/81158849
    ubuntu开机自动打开终端并以root权限执行程序


     

    展开全文
  • 因为我的目的是开机自动启动一个python程序,而且还要保证用是pi用户,不是root用户,话不多说,步骤如下 首先我们创建一个自启动文件夹 mkdir /home/pi/.config/autostart 然后自己切换到里面,新建一个xx....

    因为我的目的是开机自动启动一个python程序,而且还要保证用是pi用户,不是root用户,话不多说,步骤如下

    首先我们创建一个自启动文件夹

     mkdir /home/pi/.config/autostart
    

    然后自己切换到里面,新建一个xx.desktop文件夹

    vim pi.desktop
    

    代码如下

    [Desktop Entry]
    Name=example
    Comment=My Python Program
    Exec=python /home/pi/example.py
    Icon=/home/pi/example.png
    Terminal=false
    MultipleArgs=false
    Type=Application
    Categories=Application;Development;
    StartupNotify=true
    

    Exec 是你执行的python脚本

    展开全文
  • 由于我们是自启动python文件,所以命令会有不同。如果你要执行的程序路径为 /home/pi/run.py。在rc.local文件里Exit 0 前加入 sudo /usr/bin/python /home/pi/run.py然后ctrl+o保存,退出。...
  • /usr/bin/python#-*-coding:utf-8-*-import _winreg as wr #导入内置的windows注册表操作库import osfrom socket import *import getpassdef GetStart():key = r'SOFTWARE\Microsoft\Windows\CurrentVersion\Run'aR....
  • 写了一个python 的服务程序,放在服务器上,如果服务器重启动那么就要人上去重新开程序,从运维解度来说太麻烦,于是想要做一个自动启动的程序,有两种方法,启动python应用时有个小坑,一定要全路径写上python. ...
  • 网上很多关于python脚本以fastcgi方式在lighttpd中运行的配置,都是python以独立进程方式手动运行,如: fastcgi.server = ( "/beylog.fcgi" => ( "main" => ...
  • 实现目标:在Linux启动时,自动运行位于普通用户test1根目录下的脚本程序test.py,该程序会在每次执行时自动向本地日志文件追加一条记录,源码如下:from datetime import datetimenow=datetime.now()f=open('test....
  • 我正致力于创建一个自动化的单元测试系统,该系统将利用docker测试用Python编写的单个学生作业,对照单个单元测试文件.我创建了一个网站,学生可以上传他们的作业,但我有点不确定如何通过Docker工作实现自动化.工作流程...
  • python 命令行也可以自动补全许多人都知道 iPython 有很好的自动补全能力,但是就未必知道 python 也同样可以 Tab 键补全,您可以在启动 python 后,执行下代码如下:import readline, rlcompleter; readline....
  • 一、背景简单的写个.exe程序,没必要去学习mfc、c++等,...下面就是实现打包的exe文件开机自动运行。二、实现#!/usr/bin/python# -*- coding: UTF-8 -*-import win32apiimport win32conclass AutoRun():def __init_...
  • Python是一种跨平台的计算机程序设计语言。...1、使用Pyhton自身提供的交互式解释器在Linux、Windows、Mac OS的命令行窗口或Shell窗口,执行python命令,启动Python交互式解释器。交互式解释器会等待用户输入Python...
  • 如果是VIM7.3,不需要再...但是, 必须保证编译安装 VIM 的时候启用了 Python 特性, 即: ./configure--with-features=huge--enable-pythoninterp=yes 我们可以在vim autoload 目录下看到 在 ~/.v...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,337
精华内容 1,734
关键字:

自动启动python

python 订阅