Nig*_*gel 2 linux shell-script
我想每x分钟抓取相同的图像(来自网站)以最终制作延时视频。
我的问题是:
最好使用 Python 之类的东西吗?
让我们以您的头像为例(保存到/opt/download-avatar
)
#!/bin/bash
URL="https://www.gravatar.com/avatar/554f043fa658cba9bbc2ee4c6d4e052d?d=identicon"
timestamp=$(date +%F_%T);
wget "$URL" -O "${timestamp}.png"
Run Code Online (Sandbox Code Playgroud)
注意:最好将文件名保存为纪元的秒数 timestamp=$(date +%s)
创建一个cron 作业,每 5 分钟运行一次(保存到/etc/cron.d/timelapse-avatar
)
#!/bin/sh
*/5 * * * * /opt/download-avatar
Run Code Online (Sandbox Code Playgroud)
使脚本可执行
chmod +x /opt/download-avatar
sudo chmod 755 /etc/cron.d/timelapse-avatar
Run Code Online (Sandbox Code Playgroud)
如果您不想使用,cron
那么只需(保存到~/start-timelapse
)
#!/bin/bash
input="$1"
URL="https://www.gravatar.com/avatar/554f043fa658cba9bbc2ee4c6d4e052d?d=identicon"
if [ -z "$input" ]; then
echo "USAGE: $0 [interval in minutes]"
exit 1
else
interval=$((60*input));
fi
while [ 0 = 0 ]; do
timestamp=$(date +%s)
wget "$URL" -O "${timestamp}.png"
echo "Sleeping for $input minutes"
sleep "$interval"
done;
Run Code Online (Sandbox Code Playgroud)
使可执行文件并以 7 分钟间隔运行
chmod +x ~/start-timelapse
cd ~
./start-timelapse 7
Run Code Online (Sandbox Code Playgroud)
更新:
谢谢slhck。
Nigel,默认情况下cron
以root用户身份运行。与此问题无关,但从技术上讲,它作为“特殊用户”运行,非交互式,没有环境变量,例如$PATH
,没有dbus
会话 id,没有X
会话 id 等。
~/
是用户主目录的简写(另请参阅环境变量$HOME
)。默认情况下,对于用户,这将是例如,/home/nigel
但对于root,这/root
可能是cron已将他们保存到/root/pdm-5min
. 你可以使用:
wget "$URL" -O "/home/nigel/pdm-5min/${timestamp}.png"
Run Code Online (Sandbox Code Playgroud)
但是,这些文件将由root拥有,因此nigel将无法移动、删除、编辑它们,除非您以root身份(或通过sudo
)授予自己权限
因此,您可以选择以cron
您的用户nigel运行。
#!/bin/sh
*/5 * * * * nigel /opt/download-avatar
Run Code Online (Sandbox Code Playgroud)
确保您要保存的目录存在,可能希望直接在该wget
行之前添加:
mkdir -p /home/nigel/pdm-5min/
Run Code Online (Sandbox Code Playgroud)
最后,小心你的"
(引号)。使用它们以便变量保留空格(空格、制表符等),但要确保每个单引号或双引号都有一个匹配的,这不是可选的。
归档时间: |
|
查看次数: |
2978 次 |
最近记录: |