欢迎各位兄弟 发布技术文章
这里的技术是共享的
macos 自定义一个服务 每天的10点 输出 "AAA" 至 /tmp/test.txt 下面这个是 OK 的 有大用
当然可以做成cron,验证的话 有时间是不是10点和22点,和分析$_SERVER一下
在 macOS 上,你可以使用 launchd
来创建一个守护进程(daemon)或服务,该服务可以在指定的时间执行特定的任务。以下是如何创建一个 launchd
plist 文件来实现在每天10点向 /tmp/test.txt
文件中写入 "AAA" 的步骤。
创建 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
命令。
加载 plist 文件:
保存并关闭 plist 文件后,你需要在 launchd
中加载这个 plist 文件来激活你的服务。在终端中运行以下命令:
bash复制代码launchctl load ~/Library/LaunchAgents/com.example.dailytask.plist
如果一切设置正确,launchd
将加载你的服务,并在每天的10点执行指定的命令。
验证服务:
你可以使用 launchctl list
命令来查看所有已加载的守护进程和服务,以确认你的服务是否已正确加载。要特别查看你的服务,可以使用:
bash复制代码应该launchctl list | grep com.example.dailytask
如果服务已正确加载,你能看到它列在输出中。
测试服务:
如果你想要立即测试服务而不是等待到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'
这样的表达式时,它意味着:
/bin/bash
:调用 bash shell 的可执行文件。/bin/
是大多数 Unix-like 系统中包含基本用户命令的目录,而 bash
是 Bourne Again SHell 的缩写,是一种广泛使用的 shell 程序。
-c
:这是 bash 的一个选项,用于指定接下来的参数应该被当作一个或多个命令来执行。
'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 点)的步骤:
首先,创建一个简单的 bash 脚本,该脚本将 "AAA" 写入 /tmp/test.txt
。假设我们将此脚本命名为 write_aaa.sh
并放在你的主目录下:
bash复制代码#!/bin/bash echo "AAA" > /tmp/test.txt
确保给这个脚本执行权限:
bash复制代码chmod +x ~/write_aaa.sh
在你的 ~/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>
在相同的目录下,创建另一个名为 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>
在终端中,使用 launchctl
加载这两个 plist 文件:
bash复制代码launchctl load ~/Library/LaunchAgents/com.example.dailytask-10am.plist launchctl load ~/Library/LaunchAgents/com.example.dailytask-10pm.plist
你可以使用 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
的服务。
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>
plist
文件放置到正确的位置将上面创建的 plist
文件放到 ~/Library/LaunchAgents/
目录下。如果你没有这个目录,可以手动创建它。
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" 字符串。