Linux中用shell脚本设置某个可执行文件或者命令自启动

ps:经理给了个需求,要把我们的产品设置自启动,我就说可以用crontab添加到自启动,结果是说那边实施部门去给客户部署产品,不会命令行需要一键脚本设置自启动,好嘛这就又需要shell了。

首先介绍crontab

crontab是一个在Linux和Unix操作系统上用于安排定期执行任务的工具。它允许用户按照指定的时间间隔自动运行命令或脚本,可以设置任务在每天、每周、每月或者更长的时间周期内运行。通过编辑crontab文件,用户可以管理定时任务并设置它们的执行时间和频率。crontab是一个非常有用的工具,特别是在需要定期备份、清理或更新系统的情况下。

crontab设置自启动步骤

1、打开终端并使用以下命令编辑crontab文件:

crontab -e

2、在打开的文件中,添加以下行:

@reboot /path/to/your/command

其中@reboot故名思义就是重启,也就是启动的时候就会执行后面的脚本或命令
要注意的是其中,/path/to/your/command 是在系统启动时执行的命令的完整路径也就是绝对路径,不能是相对路径。
3、重启测试就行了!

如何写shell一键设置自启动

对于如何设置自启动刚开始是一头雾水的,但是想到了以前在学校学Linux时候用过shell脚本,那我们是不是可以写一个脚本,这个脚本可以写脚本(比如设置自启动),那么问题有了方向,也就好解决了,然后又想到路径的问题需要shell读取当前脚本的绝对路径,然后又发现crontab 是可以从crontab.txt导入脚本的。

一键设置自启动脚本步骤

1、新建脚本reboot.sh,写下下面内容:

#!/bin/bash

dir="$( cd "$( dirname "${BASH_SOURCE[1]}" )" >/dev/null 2>&1 && pwd )"

reboot_str="@reboot $dir/start.sh"

echo "$reboot_str" > reboot.txt

crontab reboot.txt

下面我解释一下上面代码:

  1. dir="$( cd "$( dirname "${BASH_SOURCE[1]}" )" >/dev/null 2>&1 && pwd ):用于获取当前脚本所在目录的完整路径也就是绝对路径。

BASH_SOURCE[1] 表示当前脚本的相对路径;
dirname "${BASH_SOURCE[1]}" 获取当前脚本所在目录的路径;
cd "$( dirname "${BASH_SOURCE[1]}" )" >/dev/null 2>&1 切换到当前脚本所在目录,并将输出重定向到/dev/null以禁止任何输出;
pwd 获取当前目录的完整路径;
dir= 将当前目录路径赋值给变量dir

  1. reboot_str="@reboot $dir/start.sh"

变量reboot_str定义,包含了一个crontab任务的时间设置和要执行的命令。
$dir 是一个变量,表示当前脚本所在目录的完整路径;
$dir/start.sh 表示当前脚本所在目录中名为start.sh的脚本文件;
@reboot 表示要在系统启动时运行该命令;
"$dir/start.sh" 是要运行的命令,它的完整路径是$dir/start.sh

所以,将@reboot $dir/start.sh赋值给变量reboot_str,实际上是将一个在系统启动时自动执行$dir/start.shcrontab任务的时间设置和要执行的命令存储到变量中,以便后续使用。

  1. echo "$reboot_str" > reboot.txt

将上一步中定义的reboot_str变量的值写入一个名为reboot.txt的文本文件中。
要注意的是>会覆盖,而>>是追加。

  1. crontab reboot.txt

导入reboot.txt的命令给crontab任务,让他按照我们写的命令设置自启动。

这样设置一键自启动的脚本就写完了,这算是我工作的第一个需求吧(虽然很简单)记录一下,希望大家一起加油(冲,打工人!

你可能感兴趣的:(工作,#,Shell,#,Linux,linux,运维,bash)