2024-09-01
Linux运维
00

目录

安装inotifywait
脚本setgradiopermissions.sh
开机自启动服务
服务脚本含义

安装inotifywait

inotifywait 工具通常随着 inotify 包的一部分提供。这意味着您需要安装 inotify 包,以便在系统上使用 inotifywait。

如果您使用的是基于 Debian 或 Ubuntu 的 Linux 发行版,您可以使用以下命令安装 inotify 包:

bash
sudo apt-get update sudo apt-get install inotify-tools

如果您使用的是基于 CentOS、RHEL 或 Fedora 的发行版,您可以使用以下命令安装 inotify 包:

bash
sudo yum install inotify-tools

安装完 inotify 包后,inotifywait 工具就会包含在其中。

脚本set_gradio_permissions.sh

使用 inotify 工具监视 /tmp/gradio 目录,并在其中创建新文件夹时自动应用所需的权限。编写一个简单的脚本来实现这一目标。

以下是一个使用 inotifywait 和 bash 脚本的示例。

vim /root/set_gradio_permissions.sh

bash
#!/bin/bash # 监视/tmp/gradio目录中的新文件夹创建 inotifywait -m -e create --format '%w%f' /tmp/gradio | while read new_dir do # 设置新文件夹的权限为777 chmod 777 "$new_dir" done

将此脚本保存为一个文件(例如 set_gradio_permissions.sh),然后通过以下命令使其可执行:

bash
chmod +x set_gradio_permissions.sh

然后,您可以在后台运行此脚本,以便在 /tmp/gradio 中创建新文件夹时自动设置权限:

bash
./set_gradio_permissions.sh &

现在,每当在 /tmp/gradio 中创建新文件夹时,都会自动将其权限设置为 777。

开机自启动服务

要将脚本设置为一直处于服务的状态,并在系统启动时自动启动,您可以使用系统的服务管理工具(如 systemd)来管理您的脚本。下面是一个简单的示例来创建一个 systemd 服务:

首先,创建一个服务文件 vim /etc/systemd/system/gradio_permissions.service,内容如下:

plaintext
[Unit] Description=Set permissions for /tmp/gradio After=network.target [Service] Type=simple ExecStart=/root/set_gradio_permissions.sh Restart=always [Install] WantedBy=multi-user.target

请确保将 /root/set_gradio_permissions.sh 替换为您实际的脚本路径。

接下来,重新加载 systemd 配置并启动服务:

bash
sudo systemctl daemon-reload sudo systemctl start gradio_permissions

sudo systemctl daemon-reload 是一个 systemd 命令,用于重新加载 systemd 管理的所有单元(unit)的配置文件。这包括服务、套接字、挂载点等。当您修改了任何 systemd 单元的配置文件后,需要运行 daemon-reload 命令,以便 systemd 重新加载配置文件,使新的配置生效。

要在系统启动时自动启动服务,您可以使用 enable 命令:

bash
sudo systemctl enable gradio_permissions

现在,您的脚本将作为一个服务在系统启动时自动运行,并且会持续监视 /tmp/gradio 目录以设置新文件夹的权限。

在这里插入图片描述

服务脚本含义

这是一个 systemd 服务单元文件的示例,用于描述一个名为 gradio_permissions 的服务。现在我们来逐行解释每个部分的含义:

  1. [Unit]

    • 这一部分声明了服务单元的基本信息。

    • Description=Set permissions for /tmp/gradio:描述了这个服务的简要说明,说明了服务的功能。

    • After=network.target:指定了服务应该在网络目标之后启动。这意味着系统将在网络连接可用后才启动这个服务。

  2. [Service]

    • 这一部分定义了服务的运行方式。

    • Type=simple:指定了服务的类型。在这里,它指定为简单类型,表示 systemd 将启动该服务并等待其终止。

    • ExecStart=/root/set_gradio_permissions.sh:指定了服务启动时要执行的命令或脚本。在这里,它指定为 /root/set_gradio_permissions.sh,这是您要运行的设置权限脚本的路径。

    • Restart=always:指定了服务在终止时是否应自动重启。always 表示无论服务是如何终止的(正常终止还是非正常终止),都应该重新启动。

  3. [Install]

    • 这一部分定义了如何安装这个服务。

    • WantedBy=multi-user.target:指定了这个服务应该被添加到哪个目标中。在这里,它指定为 multi-user.target,表示这个服务应该在多用户模式下运行。

综上所述,这个 systemd 服务单元文件描述了一个名为 gradio_permissions 的服务,其目的是在系统启动时设置 /tmp/gradio 目录的权限,并且它将在网络目标之后启动,以确保网络连接可用,同时它会在终止时自动重启,并在多用户模式下运行。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!