在系统启动时启动的文件中的日期函数 - bash

时间:2015-05-25 18:41:45

标签: linux bash shell datetime

我正在尝试在启动时运行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 。 我能够将程序设置为启动应用程序的方式是在菜单>首选项>启动应用程序中,并将该文件添加到现有应用程序中。

3 个答案:

答案 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 ,而不仅仅是文件路径。

有了这个,我的问题似乎就解决了。