使用 shell 脚本在重启时运行 Android Studio

使用 shell 脚本在重启时运行 Android Studio

我想在计算机启动时启动 Android Studio。我使用了 crontab 和 @reboot 参数:

crontab -e

并安排了这项任务

@reboot /home/ziko/reboot_cron.sh # JOB_ID_1
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

然后在我的主目录中添加脚本-reboot_cron.sh

echo "It is now $(date +%T) on $(date +%A)" >> cron_reboot.log
/opt/android-studio/bin/studio.sh

重启电脑后,我没有在 cron_reboot.log 中看到日志,并且 Android Studio 未启动。我做错了什么?

更新。我添加了第二个计划任务,它起作用了

#!/bin/sh
#!/bin/bash
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

@reboot root /home/ziko/reboot_cron.sh # don't work!
*/5 * * * * /home/ziko/mycrontest.sh   # it works!

如果我手动运行 reboot_cron.sh,它可以工作,但在 crontab 中却不工作!

答案1

您是否尝试过从系统 crontab 中执行“@reboot root su -l ziko sh (script.sh)”?

您可能无法让@reboot 以非 root 身份运行。

-

在系统 /etc/crontab 中:

@reboot root su -l (user_to_run_as) (your_sh_script)

或非 root 'crontab -e' 用户:

@reboot sh (your sh script)

(每:https://askubuntu.com/a/549646/169878

-

注意:我不太确定您是否需要 root 权限才能在 Ubuntu 或 Debian 下通过 crond 正确执行 @reboot(或者是否需要在系统范围的 crontab 中执行)。首先尝试“@reboot sh”,看看它是否可以以非 root 用户身份运行。另请参阅https://unix.stackexchange.com/q/109804

编辑:

除非你真的需要通过 crond 执行此操作,否则最好将其设置为在里面脚本(基于运行级别)或rc.本地条目。。任何一个都可以在正常启动时执行。您的脚本将在系统完全启动后执行。由于您不需要对脚本进行更多控制,只需在启动时执行一次,rc.local 应该没问题。

“rc.local”的示例:

sudo nano /etc/rc.local

添加此行‘退出 0’:

su -l ziko /opt/android-studio/bin/studio.sh

节省。

sudo chmod 755 /etc/rc.local

(重新启动)'studio.sh' 应该在启动时以 ziko 用户身份执行/启动

相关内容