【问题标题】:OSX bash "sleep"OSX bash“睡眠”
【发布时间】:2012-10-09 15:39:11
【问题描述】:

我正在尝试暂停或“休眠”在 OSX 中运行的 bash 脚本中的特定行。该脚本在登录前启动时运行。我没有看到我期望的结果。换句话说,无论我在“睡眠”之后指定什么时间,脚本仍然会正确移动,不会有任何延迟。但是,当我在登录后运行脚本时,“睡眠”命令似乎工作得很好。

在登录之前或我的脚本运行之前,命令文件“sleep”是否可能不在路径中?如果我在命令之前放置睡眠路径会有帮助吗?如果是这样,“睡眠”住在哪里?

我可以尝试其他方法或替代命令吗?

谢谢

#!/bin/bash

#Create the bin directory
sudo mkdir /usr/local/bin

sleep 10

#Copy the files to the Hard Drive
sudo cp /Volumes/NO\ NAME/adbind.bash /usr/local/bin/adbind.bash
sudo cp /Volumes/NO\ NAME/com.sjusd.adbind.plist /Library/LaunchDaemons/com.sjusd.adbind.plist

#Fix permissions
sudo chown root:wheel /usr/local/bin
sudo chmod 755 /usr/local/bin
sudo chown root:wheel /Library/LaunchDaemons/com.sjusd.adbind.plist
sudo chmod 755 /Library/LaunchDaemons/com.sjusd.adbind.plist

exit 0

该死的强硬人群,我得到了一个负 1 LOL

【问题讨论】:

  • 您期待什么结果?你能展示一下剧本吗?有输出吗? sleep 是顺便说一句。通常位于/bin/sleep
  • echo $(which sleep) 在脚本的开头,用于测试您的问题。
  • Zulu 确实验证了它在 /bin 目录中。谢谢你。它只是在登录之前不起作用。
  • 只是出于好奇,你怎么知道它没有在睡觉?你确定你知道脚本什么时候启动,并且你测量过执行时间吗?
  • 实际上涉及到一个不同的脚本,上面的脚本是一个测试我基本上可以在登录后在终端中手动运行时计算它,这个脚本正在工作。另一个脚本,我将睡眠时间提高到“睡眠 5m”,因为登录窗口出现在此之前告诉我它不起作用。

标签: macos bash shell


【解决方案1】:

这可能有点晚了,但 OS X 上的 sleep 似乎不适用于量词 (m,h, ...)。 Official Apple documentation

所以“sleep 5m”和“sleep 5”是一样的。如果你想要5分钟,你必须使用“sleep 300”

【讨论】:

  • “有点晚了”有点轻描淡写。但这可能是正确的答案,所以请投赞成票。
  • 这没有回答问题。
【解决方案2】:

如果您运行which sleep,您可以获得系统上“睡眠”的路径。我得到/bin/sleep

此时,您有两个选择:

调用时可以指定sleep的路径

#!/bin/bash
# script before sleep ...
/bin/sleep
# ... after sleep

或者您可以在调用之前将路径添加到脚本中的$PATH 变量。

#!/bin/bash
PATH="$PATH:/bin"
# script before sleep ...
sleep
# ... after sleep

【讨论】:

  • 这似乎没有帮助。当我查看 /bin 时,我看不到睡眠。但是如果我登录时它可以工作,它必须在某个地方。OSX版本是10.8.2
  • 我添加了 echo $(which sleep),它确实显示它在 /bin 目录中。我添加了 PATH 并在命令之前添加了 /bin/sleep 。我只是不明白。呃
  • 从命令行运行which sleep 会发生什么? /bin/sleep 有可能(但不太可能)已损坏,但在您的 $PATH 之前以交互方式启动时有一个有效的 sleep
猜你喜欢
  • 2012-04-07
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 2014-02-20
  • 2011-02-25
  • 2015-11-19
  • 1970-01-01
  • 2018-02-20
相关资源
最近更新 更多