欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

macos 自定义一个服务 每天的10点 输出 "AAA" 至 /tmp/test.txt 文心一言 chatgpt 有大用 有大大用

macos 自定义一个服务 每天的10点 输出 "AAA" 至 /tmp/test.txt   下面这个是 OK 的  有大用

当然可以做成cron,验证的话 有时间是不是10点和22点,和分析$_SERVER一下

在 macOS 上,你可以使用 launchd 来创建一个守护进程(daemon)或服务,该服务可以在指定的时间执行特定的任务。以下是如何创建一个 launchd plist 文件来实现在每天10点向 /tmp/test.txt 文件中写入 "AAA" 的步骤。

  1. 创建 plist 文件

    首先,你需要创建一个 plist 文件来描述你的服务。plist 文件通常放在 ~/Library/LaunchAgents/ 目录下(对于用户级任务)或 /Library/LaunchDaemons/ 目录下(对于系统级任务)。这里,我们将其放在用户级目录下。

    打开你的终端,并使用你喜欢的文本编辑器(如 nano 或 vim)创建一个新的 plist 文件。例如,使用 nano 编辑器:

    bash复制代码

    nano ~/Library/LaunchAgents/com.example.dailytask.plist

    然后,将以下内容粘贴到文件中:

    xml复制代码

    <?xml version="1.0" encoding="UTF-8"?>  

    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">  

    <plist version="1.0">  

    <dict>  

       <key>Label</key>  

       <string>com.example.dailytask</string>  

       <key>ProgramArguments</key>  

       <array>  

           <string>/bin/bash</string>  

           <string>-c</string>  

           <string>echo "AAA" > /tmp/test.txt</string>  

       </array>  

       <key>StartCalendarInterval</key>  

       <dict>  

           <key>Hour</key>  

           <integer>10</integer>  

       </dict>  

    </dict>  

    </plist>

    这个 plist 文件定义了一个名为 com.example.dailytask 的服务,它使用 bash 脚本在每天的10点执行 echo "AAA" > /tmp/test.txt 命令。

  2. 加载 plist 文件

    保存并关闭 plist 文件后,你需要在 launchd 中加载这个 plist 文件来激活你的服务。在终端中运行以下命令:

    bash复制代码

    launchctl load ~/Library/LaunchAgents/com.example.dailytask.plist

    如果一切设置正确,launchd 将加载你的服务,并在每天的10点执行指定的命令。

  3. 验证服务

    你可以使用 launchctl list 命令来查看所有已加载的守护进程和服务,以确认你的服务是否已正确加载。要特别查看你的服务,可以使用:

    bash复制代码
    应该

    launchctl list | grep com.example.dailytask

    如果服务已正确加载,你能看到它列在输出中。

  4. 测试服务

    如果你想要立即测试服务而不是等待到10点,你可以手动触发它。首先,卸载服务以清除任何可能的延迟或挂起状态:

    bash复制代码

    launchctl unload ~/Library/LaunchAgents/com.example.dailytask.plist

    然后,使用 launchctl start 命令立即启动服务:

    bash复制代码

    launchctl start com.example.dailytask

    检查 /tmp/test.txt 文件以确认 "AAA" 是否已写入。

通过以上步骤,你应该能够成功设置一个每天10点向 /tmp/test.txt 文件中写入 "AAA" 的 macOS 服务。




/bin/bash -c 表示什么意思 -c是什么英文单词的简写


shell

/bin/bash -c "command"

在bash中,-c选项表示在shell命令行中执行给定的命令字符串。这个命令字符串将被解释并执行。

其中,-c的英文单词的简写是"command",表示"command"参数后面跟的是要执行的命令字符串。





/bin/bash -c 表示什么意思 是什么简写

在Unix和类Unix系统(如Linux和macOS)中,/bin/bash 是Bourne-Again SHell的完整路径,这是由GNU项目开发的一个非常流行的shell程序。bash是大多数基于Linux的系统默认的命令行界面。

当你看到命令行中使用 /bin/bash -c,这通常意味着你正在调用bash shell并立即执行一个命令。这里的-c是一个选项,它告诉bash从命令行读取要执行的命令字符串。换句话说,你可以将一系列命令或一个单一的命令作为一个参数传递给bash,然后它会执行这些命令。

例如,以下命令将启动bash并立即运行ls -l命令来列出当前目录下的文件和目录的详细信息:

深色版本
1/bin/bash -c "ls -l"

这个命令等同于在一个已经打开的bash shell中直接输入ls -l,但是它不需要先启动一个新的交互式shell会话,而是立即执行指定的命令后就退出了。这种做法在脚本中或通过其他命令行工具需要执行一些特定的shell命令时非常有用。




/bin/bash -c 表示什么意思

/bin/bash -c 是一个在 Unix-like 系统(包括 macOS)中常用的命令行表达式,用于通过 bash shell 执行一个或多个命令。这里的 /bin/bash 是 bash shell 的可执行文件路径,而 -c 是一个选项,它告诉 bash 从接下来的参数中读取要执行的命令,而不是从标准输入(stdin)、脚本文件或交互式会话中读取。

具体来说,当你看到 /bin/bash -c 'some_command' 这样的表达式时,它意味着:

  1. /bin/bash:调用 bash shell 的可执行文件。/bin/ 是大多数 Unix-like 系统中包含基本用户命令的目录,而 bash 是 Bourne Again SHell 的缩写,是一种广泛使用的 shell 程序。

  2. -c:这是 bash 的一个选项,用于指定接下来的参数应该被当作一个或多个命令来执行。

  3. 'some_command':这是要执行的命令,它被单引号(')或双引号(")包围起来,以确保命令中的空格、特殊字符等被正确处理。在这个例子中,some_command 应该被替换为你想要执行的实际命令。

因此,/bin/bash -c 'echo "AAA" > /tmp/test.txt' 的意思是:启动一个新的 bash 进程,并让它执行 echo "AAA" > /tmp/test.txt 命令。这个命令会将字符串 "AAA" 写入到 /tmp/test.txt 文件中。

在 launchd 的 plist 文件中,这种表达式被用作 ProgramArguments 数组的一部分,以指定 launchd 应该启动哪个程序以及该程序应该接收哪些参数。在 plist 文件的上下文中,每个 <string> 元素都代表一个单独的参数,因此 -c 和要执行的命令需要作为单独的 <string> 元素列出。



macos 自定义一个服务 每天的10点和22点 输出 "AAA" 至 /tmp/test.txt   下面这个是 OK 的  有大用

在 macOS 上,要创建一个 launchd 服务以在每天的 10 点和 22 点向 /tmp/test.txt 文件中写入 "AAA",你需要稍微修改 plist 文件以包含两个定时任务。但是,launchd 的 StartCalendarInterval 字典不直接支持多个时间点。相反,你可以定义两个独立的 <dict> 节点,每个都包含自己的 StartCalendarInterval 和指向同一脚本的引用。

然而,由于 plist 文件的限制,你不能直接在单个 plist 文件中为同一服务定义多个 StartCalendarInterval。相反,你可以创建两个服务,每个服务都指向同一个脚本,但具有不同的触发时间。

以下是如何创建两个 plist 文件(一个用于 10 点,另一个用于 22 点)的步骤:

1. 创建脚本

首先,创建一个简单的 bash 脚本,该脚本将 "AAA" 写入 /tmp/test.txt。假设我们将此脚本命名为 write_aaa.sh 并放在你的主目录下:

bash复制代码

#!/bin/bash  

echo "AAA" > /tmp/test.txt

确保给这个脚本执行权限:

bash复制代码

chmod +x ~/write_aaa.sh

2. 创建第一个 plist 文件(10点)

在你的 ~/Library/LaunchAgents/ 目录下创建一个名为 com.example.dailytask-10am.plist 的文件,并添加以下内容:

xml复制代码

<?xml version="1.0" encoding="UTF-8"?>  

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">  

<plist version="1.0">  

<dict>  

<key>Label</key>  

<string>com.example.dailytask-10am</string>  

<key>ProgramArguments</key>  

<array>  

<string>/bin/bash</string>  

<string>-c</string>  

<string>~/write_aaa.sh</string>  

</array>  

<key>StartCalendarInterval</key>  

<dict>  

<key>Hour</key>  

<integer>10</integer>  

<key>Minute</key>  

<integer>0</integer>  

</dict>  

</dict>  

</plist>

3. 创建第二个 plist 文件(22点)

在相同的目录下,创建另一个名为 com.example.dailytask-10pm.plist 的文件,并添加类似的内容,但将 Hour 改为 22:

xml复制代码

<?xml version="1.0" encoding="UTF-8"?>  

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">  

<plist version="1.0">  

<dict>  

<key>Label</key>  

<string>com.example.dailytask-10pm</string>  

<key>ProgramArguments</key>  

<array>  

<string>/bin/bash</string>  

<string>-c</string>  

<string>~/write_aaa.sh</string>  

</array>  

<key>StartCalendarInterval</key>  

<dict>  

<key>Hour</key>  

<integer>22</integer>  

<key>Minute</key>  

<integer>0</integer>  

</dict>  

</dict>  

</plist>

4. 加载 plist 文件

在终端中,使用 launchctl 加载这两个 plist 文件:

bash复制代码

launchctl load ~/Library/LaunchAgents/com.example.dailytask-10am.plist

launchctl load ~/Library/LaunchAgents/com.example.dailytask-10pm.plist

5. 验证服务

你可以使用 launchctl list 来查看已加载的服务,并使用 grep 来过滤出你的服务:

bash复制代码

launchctl list | grep com.example.dailytask

这将显示你的两个服务是否已成功加载。

现在,你的 macOS 系统应该会在每天的 10 点和 22 点自动执行 write_aaa.sh 脚本,将 "AAA" 写入 /tmp/test.txt 文件。




macos 自定义一个服务 每天的10点 输出 "AAA" 至 /tmp/test.txt

在macOS上,你可以使用launchd来创建定时任务。launchd是macOS以及Apple其他操作系统中的作业调度服务。下面是如何设置一个每天10点输出 "AAA" 至 /tmp/test.txt 的服务。

步骤 1: 创建 plist 文件

你需要创建一个.plist文件来配置你的定时任务。这个文件将描述任务的细节,包括执行的程序、频率等。可以将下面的代码保存为一个 .plist 文件,比如命名为 com.example.dailyTask.plist

xml
深色版本
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3<plist version="1.0">
4<dict>
5    <key>Label</key>
6    <string>com.example.dailyTask</string>
7    <key>ProgramArguments</key>
8    <array>
9        <string>/bin/bash</string>
10        <string>-c</string>
11        <string>echo AAA >> /tmp/test.txt</string>
12    </array>
13    <key>StartCalendarInterval</key>
14    <dict>
15        <key>Hour</key>
16        <integer>10</integer>
17    </dict>
18    <key>RunAtLoad</key>
19    <true/>
20</dict>
21</plist>

步骤 2: 将 plist 文件放置到正确的位置

将上面创建的 plist 文件放到 ~/Library/LaunchAgents/ 目录下。如果你没有这个目录,可以手动创建它。

步骤 3: 加载 plist 文件

使用 launchctl 命令来加载你刚刚创建的服务:

bash
深色版本
1launchctl load ~/Library/LaunchAgents/com.example.dailyTask.plist

验证服务状态

你可以使用 launchctl list 命令来查看所有已加载的任务,确认你的任务是否已经被加载。如果一切正常,你应该能看到 com.example.dailyTask 在列表中,并且状态应该是 0(表示服务是运行状态)。

卸载服务

如果你想停止或者卸载这个服务,你可以使用下面的命令:

bash
深色版本
1launchctl unload ~/Library/LaunchAgents/com.example.dailyTask.plist

然后你可以删除 plist 文件,或者保留它以便将来再次使用。

这样设置之后,你的任务就会在每天的10点执行,并向 /tmp/test.txt 文件追加 "AAA" 字符串。



普通分类: