谈谈Linux权限管理以及Shell

首先对于一条Linux命令;

sh abc.sh -a  -b

可以理解成两个部分:

[command] [arg list]
  • Command可以是一个文件的路径,并且如果这个文件路径在环境变量中则可以直接使用命令代替文件路径。
  • arg list就是各种参数了
  • 执行一个命令必然需要权限,权限可以使用chmod进行修改

关于可执行权限

例如,我们使用如下代码:

sh abc.sh 

实际上是在使用sh执行一个abc.sh,但是如果直接执行abc.sh

./abc.sh

却会爆出Permission Denied的错误,这个是因为对于这个文件没有可执行权限。可以使用chmod添加可执行权限:

chmod +x abc.sh

然后就可以不加sh直接执行了

Cron的使用

有了这些知识,编写Cron命令会干净很多。

安装

首先安装Cron,apt-get没啥好说的。

基本使用

一个挺全的Guidance: https://wiki.archlinux.org/index.php/Cron

To view their crontabs, users should issue the command:

$ crontab -l

To edit their crontabs, they may use:

$ crontab -e

Note: By default the crontab command uses the vi editor. To change it, export EDITOR or VISUAL, or specify the editor directly: EDITOR=vim crontab -e. To remove their crontabs, they should use:

$ crontab -r

If a user has a saved crontab and would like to completely overwrite their old crontab, he or she should use:

$ crontab saved_crontab_filename

To overwrite a crontab from the command line (Wikipedia:stdin), use

$ crontab - 

实际上记住两个命令就行:

 # 显示list
 $ crontab -l     
 # 编辑task
 $ crontab -e

编辑Task

我们执行以下crontab -e然后就会进入编辑窗口

这次只提一下开机启动,对应的格式为:

@reboot [command]

实际上很简单:

@reboot forever start /home/ubuntu/project/abc.js

保存退出,然后每次开机都可以自动跑一次Forever开启Node服务器

进一步管理Task

现在你重启的时候可以自动跑Node服务器了,但是其实这样的命令管理还不够,建议将代码结构化。

因此我们将cron的命令改一改:

@reboot sh /home/ubuntu/nodeTask.sh

然后将forever的命令放到这个.sh中,以后仅仅需要修改nodeTask.sh,甚至可以用SFTP进行编辑task细节

不过这样还不够清晰,我不想在这儿加上sh的命令,希望直接使用.sh作为命令。其实这里的原因就是cron使用user的权限而user没有可执行权限。

这时就会用到上面提到的,给这个.sh文件添加可执行权限。

chmod +x nodeTask.sh

然后cron命令又可以修改成:

@reboot /home/ubuntu/nodeTask.sh

命令干净多了。

系列文章

优雅地乱玩Linux

参考文献

  • 文章标题: 《优雅地乱玩Linux-7-Cron实现程序自启动》
  • 发布日期: 2017-08-26
  • 文章分类: Tech
  • 相关标签: Linux LinuxReboot Chrome SSH
  • Extra:
    • Mood: 8/10
    • Sleep: 7/10
    • Hunger: 8/10
    • Daily Buff: 写完后去看有嘻哈
    • Daily Debuff: none