linux 是否可以通过Mint自动重启5次?

qq24tv8q  于 2022-11-22  发布在  Linux
关注(0)|答案(4)|浏览(163)

我当前正在使用以下命令运行reboot

sudo shutdown -r now

然而,我需要在执行一些其他程序之前和之后运行它5个循环。不知道是否有可能在薄荷环境中做到这一点?

ep6jt1vc

ep6jt1vc1#

先声明一句:我还没有尝试过,因为我现在不想重新启动计算机...
无论如何,我们的想法是创建一个脚本,它可以跟踪它的迭代进度到一个文件,就像@david-c-兰金建议的那样。这个bash脚本可以看起来像这样(我确实测试了这个):

#!/bin/sh

ITERATIONS="5"

TRACKING_FILE="/path/to/bootloop.txt"
touch "$TRACKING_FILE"

N=$(cat "$TRACKING_FILE" | wc -c)

if [ "$N" -lt "$ITERATIONS" ]; then
    printf "." >> "$TRACKING_FILE"
    echo "rebooting (iteration $N)"
    # TODO: this is where you put the reboot command
    #       and anything you want to run before rebooting each time
else
    rm "$TRACKING_FILE"
    # TODO: other commands to resume anything required
fi

然后在 Boot 时运行该脚本的地方添加一个调用。例如cron(@reboot)或systemd。当您完成或下次重新启动时,不要忘记将其从startup/boot命令中删除,它将重新启动N次。
不确定您计划如何使用它,但一般工作流程如下所示:
1.将脚本保存到/path/to/reboot_five_times.sh
1.添加 Boot 时运行脚本(cron等)
1.执行操作(手动或在脚本中)
1.调用脚本
1.计算机重新启动5次
1.然后运行脚本的第二个TODO部分中的任何内容
1.返回到第3步,或者如果完成了,从cron/systemd中删除,这样它就不会在您不希望它重新启动时重新启动。

ckocjqey

ckocjqey2#

首先创建一个文本文档,我在桌面上创建了一个,然后使用这个文件作为一个物理计数器,并编写一个守护程序文件来运行启动时的东西
例如:

#!/bin/sh
var=$(cat a.txt)
echo "$var"
if [ "$var" != 5 ]
then
    var=$((var+1))
    echo "$var" > a.txt
    echo "restart here"
    sudo shutdown -r now
else
    echo "stop restart"
    echo 0 > a.txt
fi

希望这对你有帮助

0lvr5msh

0lvr5msh3#

我找到了一种方法,在启动时为我的重启脚本创建一个文件。我将它与swalladge和shubh提供的答案结合在一起。非常感谢!

#!/bin/bash

#testing making a startup application

echo "
[Desktop Entry]
Type=Application
Exec=notify-send success
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_CA]=This is a Test
Name=This is a Test
Comment[en_CA]=
Comment=" > ~/.config/autostart/test.desktop
dm7nw8vv

dm7nw8vv4#

我创建了一个/etc/rc.local文件来执行user3089519的脚本,这适用于我的情况。(对于bootloop.txt,我将它放在这里:(单位:/usr/local/share/bootloop.txt
第一个:sudo nano /etc/rc.local
然后编辑:

#!/bin/bash
  #TODO: things you want to execute when system boot.
  /path/to/reboot_five_times.sh 
exit 0

那就成功了。
不要忘记编辑/etc/rc.local和删除/path/to/reboot_five_times.sh时,你完成了重新启动循环。

相关问题