Linux系統如何設置開機自動運行腳本?

来源:https://www.cnblogs.com/yychuyu/archive/2020/06/11/13095732.html
-Advertisement-
Play Games

大家好,我是良許。 在工作中,我們經常有個需求,那就是在系統啟動之後,自動啟動某個腳本或服務。在 Windows 下,我們有很多方法可以設置開機啟動,但在 Linux 系統下我們需要如何操作呢? Linux 下同樣可以設置開機啟動,但可能需要我們敲一些命令(可能也有 UI 界面的設置方法,但我不熟, ...


大家好,我是良許。

在工作中,我們經常有個需求,那就是在系統啟動之後,自動啟動某個腳本或服務。在 Windows 下,我們有很多方法可以設置開機啟動,但在 Linux 系統下我們需要如何操作呢?

Linux 下同樣可以設置開機啟動,但可能需要我們敲一些命令(可能也有 UI 界面的設置方法,但我不熟,我更多是玩命令)。下麵我們就介紹三種簡單但可行的開機啟動設置方法。

方法一:修改 /etc/rc.d/rc.local 文件

/etc/rc.d/rc.local 文件會在 Linux 系統各項服務都啟動完畢之後再被運行。所以你想要自己的腳本在開機後被運行的話,可以將自己腳本路徑加到該文件里。

但是,首先需要確認你有運行這個文件的許可權。

$ chmod +x /etc/rc.d/rc.local

為了演示,我們創建了一個腳本,當它被執行之後,將在家目錄下寫入有特定信息的文件。

$ vim auto_run_script.sh

#!/bin/bash
date >> /home/alvin/output.txt
hostname >> /home/alvin/output.txt

保存退出後,再給它賦予可執行許可權:

$ chmod +x auto_run_script.sh

然後,我們再將腳本添加到 /etc/rc.d/rc.local 文件最後一行:

$ vim /etc/rc.d/rc.local

/home/alvin/auto_run_script.sh

接下來,我們就可以試試效果了。直接重啟系統就可以了:

$ sudo reboot

重啟之後,就會在家目錄下看到腳本執行的結果了。

方法二:使用 crontab

大家知道,crontab 是 Linux 下的計劃任務,當時間達到我們設定的時間時,可以自動觸發某些腳本的運行。

我們可以自己設置計劃任務時間,然後編寫對應的腳本。但是,有個特殊的任務,叫作 @reboot ,我們其實也可以直接從它的字面意義看出來,這個任務就是在系統重啟之後自動運行某個腳本。

那它將運行的是什麼腳本呢?我們如何去設置這個腳本呢?我們可以通過 crontab -e 來設置。

$ crontab -e

@reboot /home/alvin/auto_run_script.sh

然後,直接重啟即可。運行的效果跟上面類似。

方法三:使用 systemd 服務

以上介紹的兩種方法,在任何 Linux 系統上都可以使用。但本方法僅適用於 systemd 系統。如何區分是不是 systemd 系統?很簡單,只需運行 ps aux 命令,查看 pid 為 1 的進程是不是 systemd 。

為了實現目的,我們需要創建一個 systemd 啟動服務,並把它放置在 /etc/systemd/system/ 目錄下。

我們創建的 systemd 啟動服務如下。請註意,這時尾碼是 .service ,而不是 .sh

$ vim auto_run_script.service

[Unit]
Description=Run a Custom Script at Startup
After=default.target

[Service]
ExecStart=/home/alvin/auto_run_script.sh

[Install]
WantedBy=default.target

從服務的內容可以看出來,我們最終還是會調用 /home/alvin/auto_run_script.sh 這個腳本。

然後,我們再把這個腳本放置在 /etc/systemd/systerm/ 目錄下,之後我們再運行下麵兩條命令來更新 systemd 配置文件,並啟動服務。

$ systemctl daemon-reload
$ systemctl enable auto_run_script.service

萬事俱備之後,我們就可以重啟系統啦。

$ reboot

公眾號:良許Linux

有收穫?希望老鐵們來個三連擊,給更多的人看到這篇文章


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 什麼是網關 簡單點說網關是一個Api伺服器,是系統的唯一入口。為每個客戶端提供一個定製的Restful API。同時它還需要具有一些業務之外的責任:鑒權。靜態響應等處理。 為什麼需要gateway 我們知道我們要進入一個服務本身,並不是一件容易的事情。服務本身有自己的通訊協議,這種協議往往不能很好的 ...
  • 網上很多創建Widows Service 的方法,其安裝和運行服務的方式大多是通過cmd 命令來實現的,這裡將通過控制台的形式實現安裝、運行和卸載服務。 主頁代碼: 1 using KQService.Job; 2 using KQService.Utils; 3 using System; 4 u ...
  • 這是一文說通系列的第二篇,裡面有些內容會用到第一篇中間件的部分概念。如果需要,可以參看第一篇:一文說通Dotnet Core的中間件 一、前言 後臺任務在一些特殊的應用場合,有相當的需求。 比方,我們需要實現一個定時任務、或周期性的任務、或非API輸出的業務響應、或不允許併發的業務處理,像提現、支付 ...
  • 系列文章 基於 abp vNext 和 .NET Core 開發博客項目 - 使用 abp cli 搭建項目 基於 abp vNext 和 .NET Core 開發博客項目 - 給項目瘦身,讓它跑起來 基於 abp vNext 和 .NET Core 開發博客項目 - 完善與美化,Swagger登場 ...
  • 動手造輪子:實現一個簡單的依賴註入(三) 支持屬性註入 Intro 前面寫了幾篇依賴註入的文章,有興趣的小伙伴可以參考文末 Reference 部分中的鏈接,一直有小伙伴希望增加屬性註入的支持,昨天試著加了一下,思路很簡單,在獲取到服務實例之後檢查實例中有沒有需要註入的屬性,如果有並且不為 null ...
  • 故事的開始 老闆說:系統很慢,下載半個小時無法下載,是否考慮先壓縮再給用戶下載? 本來是已經壓縮過了,不過第一反應應該是用戶下的數量多,導致壓縮包很大,然後自己測試發現,只是等待的時間比較久而已,仍然是下載狀態中,並不是系統慢,但是用戶體驗肯定是最直觀的,確實是我們做得不夠好,單純彈出遮罩層顯示冰冷 ...
  • Centos7 設置定時任務 在centos上最常用的定時任務應該就是crontab了,在經過各種度娘之後有三種方式實現定時任務的方法,但是所用到的場景有所不同 at 適合僅執行一次就結束的調度命令,需要啟動一個後端的atd服務。 crontab 需要啟動一個服務crond才行,crond服務通過c ...
  • 前言 學習kali-rooling的第一天,然後裝在vmware的kali崩了,百度時候發現win10子系統也有kali-rooling,所以安裝後,好奇之下找到了桌面版,試過後發現方法完全可用,文檔來源於https://www.hojun.cn/2020/03/25/ck87gn1w50084js ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...