惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
Stack Overflow Blog
Stack Overflow Blog
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
T
The Blog of Author Tim Ferriss
博客园 - 叶小钗
N
Netflix TechBlog - Medium
腾讯CDC
C
Check Point Blog
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
S
SegmentFault 最新的问题
F
Fortinet All Blogs
美团技术团队
U
Unit 42
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 司徒正美
F
Full Disclosure
Recorded Future
Recorded Future
D
DataBreaches.Net
博客园 - 【当耐特】
Martin Fowler
Martin Fowler
J
Java Code Geeks
I
InfoQ
Y
Y Combinator Blog
A
About on SuperTechFans
AI
AI
爱范儿
爱范儿
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Forbes - Security
Forbes - Security
W
WeLiveSecurity
M
MIT News - Artificial intelligence
雷峰网
雷峰网
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
Schneier on Security
Schneier on Security
The GitHub Blog
The GitHub Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
G
GRAHAM CLULEY
Know Your Adversary
Know Your Adversary
Latest news
Latest news
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
D
Docker
Recent Commits to openclaw:main
Recent Commits to openclaw:main
量子位
V2EX - 技术
V2EX - 技术
Project Zero
Project Zero

第七星尘的独立博客

保护每一次 AI 调用的隐私安全 — 面向企业和个人的大模型安全接入网关 第七星尘的独立博客 | 一个简单易上手的图标设计工具,代码已开源 第七星尘的独立博客 | 免费开源,高颜值的监控工具 第七星尘的独立博客 | 高颜值的高效开发工具集,免费开源了! 第七星尘的独立博客 | 如何在企业内网部署 DeepSeek:离线安装教程 第七星尘的独立博客 | MySQL数据库的自动复制脚本 第七星尘的独立博客 | 自建docker hub加速镜像 第七星尘的独立博客 | AI智能箱,一个利用AI来提升效率的在线工具箱 第七星尘的独立博客 | 前端框架ElementUI使用sass离线生成自定义主题 第七星尘的独立博客 | 高并发/高io下,设置linux下文件打开数限制
第七星尘的独立博客 | linux利用cron定时服务来实现开机启动某些应用
2023-02-18 · via 第七星尘的独立博客

前言

我会先介绍linux利用cron定时服务来实现开机启动的具体代码实现,然后再分析下这种开机启动方案的利弊。

代码语法例子

执行 crontab -e ,进入定时任务编辑模式。


# 假设我想开机执行的命令是 cd /var/www/node/ && npm run start 
# 意思是进入指定目录然后执行一个npm命令。 && 语法表示按顺序执行两个命令。
# 那么,如果要开机启动,我可以这么写cron 

@reboot cd /var/www/node/ && npm run start 

# @reboot  就是开机启动的意思。
# 如果要延迟启动,比如说延迟10秒,则可以这么写

@reboot sleep 10 &&  cd /var/www/node/ && npm run start

利弊

这种利用cron的启动方式非常方便,因为几乎所有linux发行版都自带cron服务,所以此方法使用范围很广。
在此方法之前,我一度利用 /etc/rc.local 文件来实现启动。但其实并不是最优秀选择。因为:

1,/etc/rc.local 文件 如果卡死可能导致系统无法启动
2,/etc/rc.local 文件启动的服务,其部分系统配置可能来不及生效。

对于上面的第2点,我详细解释下。比如说,我设置了linux的最大打开文件数,如果是用/etc/rc.local启动的,则可能我的应用还是会受到原始打开文件数设置的影响。

如果是我最上方说的cron方式启动,则是新的打开文件数配置。
这个经验,是我经过生产环境实践出来的。自此之后,我准备放弃/etc/rc.local的方式,统一都使用cron的方式来跑自脚本。
当然了,cron方式还是有它的弊端。相比Linux的systemctl服务,systemctl服务也能实现开机启动,同时还能停止服务,重启服务。这种方式确实更灵活一些。

但是systemctl是需要把脚本命令注册成服务的,这个就是另一个话题了。一般情况下,对于简单的执行脚本的场景,我还是推荐使用cron服务自启动。