![使用 shell 脚本在重启时运行 Android Studio](https://linux22.com/image/1131550/%E4%BD%BF%E7%94%A8%20shell%20%E8%84%9A%E6%9C%AC%E5%9C%A8%E9%87%8D%E5%90%AF%E6%97%B6%E8%BF%90%E8%A1%8C%20Android%20Studio.png)
我想在计算机启动时启动 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 用户身份执行/启动