Ubuntu22.04设置开机自启.sh文件以及定时任务

打印 上一主题 下一主题

主题 665|帖子 665|积分 1995

一、开机自启.sh文件

1.创建.sh文件, 路径可以自行选择

  1. sudo touch /opt/sh_files/mysh01.sh
复制代码
2.赋予可执行权限

  1. sudo chmod a+x /opt/sh_files/mysh01.sh
复制代码
3.输入内容到.sh文件中

注意:脚本文件的第一行应该是shebang,指定了执行该脚本的表明器。例如,如果是一个bash脚本,它应该是 #!/bin/bash
  1. vim /opt/sh_files/mysh01.sh
复制代码
样本内容:
  1. #!/bin/bash  
  2. # 会议室服务  
  3. cd /opt/django_projects/dj_project  
  4. source ../vc/bin/activate  
  5. uwsgi --ini /opt/django_projects/dj_project/uwsgi.ini &
复制代码
生存退出
4.创建.service文件在 /etc/systemd/system 目次下

  1. sudo nano /etc/systemd/system/myscript01.service
复制代码
 上述命名会创建并打开一个文本编辑器,往里面输入以下内容:
  1. [Unit]  
  2. Description=My Custom Script  
  3. After=network.target  
  4. [Service]  
  5. ExecStart=/opt/sh_files/mysh01.sh
  6. Restart=on-failure  
  7. User=root  
  8. Group=root
  9. [Install]  
  10. WantedBy=multi-user.target
复制代码
注意:将ExecStart更换成自己创建的.sh绝对路径,UserGroup换成创建.sh文件的用户和组(可以用 ll /opt/sh_files/mysh01.sh 或者 ls -l /your/path/01.sh 举行查看)
5.重新加载systemd

  1. sudo systemctl daemon-reload
复制代码
6.启用并启动服务

  1. sudo systemctl enable myscript01.service
复制代码
禁用就把 enable --> disable
可以立即启动服务以测试它是否按预期工作
  1. sudo systemctl start myscript01.service
复制代码
7.查抄服状态

  1. sudo systemctl status myscript01.service
复制代码
如果状态中 Active: failed 表现失败,查抄对应文件或上述步骤是否执行成功
如果状态中 Active: deactivating ,表现服务当前处于停用状态,但不影响开机自启
如果状态中 Active: running, 表现服务正在运行
8.重启体系(非必要操作)

  1. reboot
复制代码
二、定时任务

1.创建.sh文件并赋予可执行权限

  1. sudo touch /opt/sh_fiels/sh02.sh
  2. sudo chmod a+x /opt/sh_files/sh02.sh
复制代码
2.输入内容

  1. vim /opt/sh_files/sh02.sh
复制代码
样本内容:
  1. #!/bin/bash  
  2.   
  3. # 查询进程  
  4. ps -aux | grep -v grep | grep /opt/django_projects/dj_project/uwsgi.ini > /opt/ps.txt 2>/dev/null  
  5.   
  6. # 检查是否有匹配的进程  
  7. if grep -q 'uwsgi' /opt/ps.txt; then  
  8.     # 关闭进程  
  9.     PID=$(grep 'uwsgi' /opt/ps.txt | awk '{print $2; exit}')  
  10.     if [ -n "$PID" ]; then  
  11.         kill -9 "$PID"  
  12.     fi  
  13. fi  
  14.   
  15. # 启动会议室服务  
  16. cd /opt/django_projects/dj_project || exit 1  
  17. source ../vc/bin/activate  
  18. uwsgi --ini /opt/django_projects/dj_project/uwsgi.ini & # 后台运行  
  19. deactavate # 定时循环需要用到
复制代码
### (简朴表明:过滤查询会议室服务的历程PID重定向到/opt/ps.txt文件里,尺度错误信息放在黑洞文件中;查抄是否有匹配的历程,如果有便读取ps.txt文件的第二列(即PID),将其作为kill命令的参数举行传递并杀死指定历程;重新启动会议室服务)
3.打开定时计划任务文本编辑器

  1. crontab -e
复制代码
4.输入内容

另起一行输入
  1. * * * * * /path/to/your/script.sh
复制代码
这里的五个星号分别代表:


  • 分钟(0-59)
  • 小时(0-23)
  • 日期(1-31)
  • 月份(1-12 或 JAN-DEC)
  • 星期(0-7,此中 0 和 7 都代表星期日,或者利用 SUN-SAT)
如果想要每隔一小时运行一次脚本,应该在小时和分钟位置利用合适的值。例如,在每个小时的第 0 分钟运行脚本,你可以这样写:
  1. 0 * * * * /opt/sh_files/sh02.sh
复制代码
依次按下 ctrl+x shift+y enter 举行生存退出
体系会在预定时间执行任务,和windows定时任务类型
5.查看定时任务列表

  1. crontab -l
复制代码
提示:该体系下的定时任务可以是如何用户创建的,可以不利用root权限;定时任务在体系重启后仍会保持运行;如果不需要该任务,进入任务文本中删除任务即可。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

水军大提督

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表