首页 > 系统相关 >Linux_开机_关机_重启_的时候执行脚本

Linux_开机_关机_重启_的时候执行脚本

时间:2024-08-15 14:37:36浏览次数:7  
标签:脚本 关机 systemd log startup shutdown Linux 开机 target

Linux_开机_关机_重启_的时候执行脚本

转载注明来源: 本文链接 来自osnosn的博客,写于 2024-08.

参考

方法

  • 开机后,重启后,运行脚本
    • /etc/rc.local 中执行脚本
    • /etc/init.d/ 中添加启动脚本
    • /etc/systemd/system/ 中添加服务。有的系统没有使用systemd。
    • crontab 中使用 @reboot 运行定时脚本。有的系统不支持,比如openwrt不支持。
  • 关机前,重启前,运行脚本
    • /etc/init.d/ 中添加停止脚本
    • /etc/systemd/system/ 中添加服务
  • ssh 登录时执行脚本
    • /etc/profile
    • ~/profile
    • /etc/bashrc
    • ~/.bashrc

systemd 的参考

例子

  • /etc/systemd/system/startup-shutdown-script.service
    [Unit]
    Description=Startup shutdown Script
    ConditionFileIsExecutable=/root/script/startup-shutdown.sh
    Requisite=network-online.target
    Conflicts=halt.target reboot.target shutdown.target poweroff.target
    Before=halt.target reboot.target shutdown.target poweroff.target
    After=network-online.target
    
    [Service]
    Type=simple
    #开机后,执行
    ExecStart=/root/script/startup-shutdown.sh startup
    #关机前,重启前,执行
    ExecStop=/root/script/startup-shutdown.sh shutdown
    StandardOutput=append:/root/script/startup-shutdown-out.log
    StandardError=append:/root/script/startup-shutdown-err.log
    RemainAfterExit=yes
    
    [Install]
    WantedBy=multi-user.target
    
  • /root/script/startup-shutdown.sh , 要设置执行权限 chmod +x startup-shutdown.sh
    #!/usr/bin/bash
    selfpath=$(/usr/bin/dirname $(/bin/readlink -f -- $0)) #当前目录
    cd ${selfpath}
    log_file=script.log
    
    if [ "$1" = "startup" ]; then
          #开机后
          echo $(/bin/date '+%F_%T%z_%w') startup  >> ${log_file}
          #有网络可用
          curl --connect-timeout 9 'https://mydomain.domain/report.php' -k -sS -X POST -d "title=test1&log[]=123&log[]=456&log[]=startup" >> /dev/null 2>> ${log_file}
    elif [ "$1" = "shutdown" ]; then
          #关机前,重启前
          echo $(/bin/date '+%F_%T%z_%w') shutdown  >> ${log_file}
          #有网络可用
          curl --connect-timeout 9 'https://mydomain.domain/report,php' -k -sS -X POST -d "title=test1&log[]=123&log[]=456&log[]=shutdown" >> /dev/null 2>> ${log_file}
    else
          echo $(/bin/date '+%F_%T%z_%w') "$1" unknow  >> ${log_file}
          echo " Usage:"
          echo "   $0" "[startup|shutdown]"
          echo
    fi
    exit 0
    

----end----


转载注明来源: 本文链接 https://www.cnblogs.com/osnosn/p/18358310.html
来自 osnosn的博客 https://www.cnblogs.com/osnosn/ .


标签:脚本,关机,systemd,log,startup,shutdown,Linux,开机,target
From: https://www.cnblogs.com/osnosn/p/18358310

相关文章

  • Linux 远程Debug JVM
    前言:    在我们的开发中由于部署环境的差异性,相信很多朋友都碰到过开发环境正常测试过的功能在测试环境甚至生产环境下出现bug的情况。一般情况下,生产环境可以采取的手段比较单一,即通过日志的方式获取运行中的环境上下文,分析日志文件并尝试重现bug。这会带来的问题还......
  • Linux系统性能监控工具Glances使用
    一Glances简介1.1glances介绍Glances是一个跨平台的监控工具,旨在通过curses或基于Web的界面呈现大量监控信息。该信息根据用户界面的大小动态调整。它也可以在客户端/服务器模式下工作。远程监控可以通过终端、Web界面或API(XML-RPC和RESTful)完成。统计数据也可以导出......
  • 嵌入式linux mkdir: cannot create directory 'test': Read-only file system
    这个错误表明你尝试在嵌入式Linux系统上创建一个名为'test'的目录时失败了,因为文件系统被挂载为只读模式。在只读模式下,你无法修改文件系统的内容,包括创建、删除文件或目录。解决方法:1.重新挂载文件系统为读写模式。你可以使用mount命令重新挂载文件系统,并指定读写权限。例如:......
  • 0233-Net-linux 收包流程
    环境Time2022-11-27WSL-Ubuntu22.04前言说明参考:https://github.com/leandromoreira/linux-network-performance-parameters目标了解linux系统接收网络数据包的具体流程。数据到达网卡网卡将光电信号还原成数据包。网卡校验如果不是在混杂模式下,网卡校验数据包中......
  • linux目录结构
    目录结构的特点linux文件系统如下有两个特点:​ 逻辑上,所有的目录都在最高级别的根目录"/"下​所有的目录内容按照类别组织目录结构###查看方式ls-la/或者tree-L1/#-L1表示显示“/”下目录的层次,1表示一层/bin二进制命令目录/boot内核及启动......
  • Linux远程开发
    1.安装ubuntu系统24.042.更换软件安装源备份原本源:sudocp/etc/apt/sources.list.d/ubuntu.sources/etc/apt/sources.list.d/ubuntu.sources.bak打开ubuntu.sources粘贴以下代码:#阿里云Types:debURIs:http://mirrors.aliyun.com/ubuntu/Suites:noblenoble-updates......
  • linux目录操作函数
    目录基本操作函数目录操作1,打开目标目录 2.读取目录  3.关闭目录 目录 当文件看,只不过操作函数和操作文件函数不一样。opendirDIR *opendir(const char *name);功能:打开一个目录获得一个目录流指针参数:name:目录名返回值:成功返回目录流指针     ......
  • java使用动态链接库读取Fanuc设备,在linux环境部署时报错:FOCAS2 log file is not found
    在linux环境中,使用java调用动态链接库的方式读取Fanuc,报错“FOCAS2logfileisnotfound”解决办法linux环境使用cnc_allclibhndl3之前,需要先使用cnc_startupprocess启用并指定日志文件,否则会报错:"FOCAS2logfileisnotfound"。会包含cnc_startupprocess,windows的dll库......
  • Linux网络设置
    目录一、查看网络接口信息、1.ifconfig命令2.hostname查看主机名称  3.route查看路由表条码 4.netstat查看网路连接情况5.ss命令6.lsof命令 二、测试网络1.ping命令,测试网络连通性 2.跟踪数据包3.域名解析 三、设置网络地址参数1.设置网络接口参数......
  • day02(Linux)Shell脚本
    Shell脚本一.shell脚本基础概念1.1概念shell使用方式:手动在命令行下命令和用shell脚本shell脚本本质:shell命令的有序集合,扩展名可以为sh见名知意,也可以没有。shell既是应用程序,又是一种脚本语言(应用程序解析脚本语言)。解释型语句:不需要编译,解释一条执行一条,pytho......