我正在尝试在启动时运行bash脚本。该脚本的目的是在设定的时间(例如每小时15点)播放音乐播放器mplayer的mp3文件。
我的bash脚本如下:
#!/bin/sh
while :
do
S=$(date)
T=${S:14:2} #this gives me the minute column of the current time
if [ $T -eq 15 ]
then
mplayer path_to_mp3_file
fi
done
当我从终端运行这个bash文件时,它工作得很好。
但是,当我用完全相同的脚本重新启动我的Linux计算机时,它无法工作(其他音乐播放器如vlc也是如此)。当仅包含mplayer file_path
命令时,该脚本也可以使用。
我已尝试设置标准程序来打开脚本 gnome-terminal.wrapper 。 我能够将程序设置为启动应用程序的方式是在菜单>首选项>启动应用程序中,并将该文件添加到现有应用程序中。
答案 0 :(得分:2)
您的问题分为两部分。 1.播放mp3,2。(大概只有在用户登录时)。对于第1部分,请使用crontab
并让cron
守护程序在每小时15点运行脚本。使用crontab -e
创建crontab文件(编辑crontab)。 crontab条目的格式为:
* * * * * command_to_execute
| | | | |
| | | | +- day of week (0-6) (Sunday = 0)
| | | +--- month (1-12)
| | +----- day of month (1-31)
| +------- hour (0-23)
+--------- minute (0-59)
在您的情况下,您需要:
15 * * * * playmymp3.sh
第2部分在您的脚本中,您需要检查用户是否已登录。要仅在您登录时播放音乐,请使用users
测试您是否已登录。 playmymp3.sh
中的这类内容应该有效:
if grep -q "yourlogin" < <( users ); then
#play mp3 file
fi
尝试一下,让我知道。
答案 1 :(得分:1)
尝试:
T=$(date +%M)
而不是:
S=$(date)
T=${S:14:2} #this gives me the minute column of the current time
(注意:当没有声音播放时,你的脚本进入一个非常快的循环,我建议你包括一个睡眠命令)。
答案 2 :(得分:0)
道歉。
将脚本设置为启动文件时,我没有注意到我必须提供实际命令 bash script_path ,而不仅仅是文件路径。
有了这个,我的问题似乎就解决了。