Linux學習之路(一)

来源:https://www.cnblogs.com/walterfong/archive/2018/09/27/9714914.html
-Advertisement-
Play Games

導語: 早前為了方便日常開發,建立跟生產環境類型的環境的時候考慮使用docker作為模擬生產環境,結果沒想到給自己的學習挖了一個大坑。其他關於docker容器技術的坑先不在這裡贅述,有時間的話在其他文章記錄下來,這裡先從最基本的工作環境開始拉開這條漫長的學習之路。 docker雖然提供了很多好用並且 ...


導語:

早前為了方便日常開發,建立跟生產環境類型的環境的時候考慮使用docker作為模擬生產環境,結果沒想到給自己的學習挖了一個大坑。其他關於docker容器技術的坑先不在這裡贅述,有時間的話在其他文章記錄下來,這裡先從最基本的工作環境開始拉開這條漫長的學習之路。

docker雖然提供了很多好用並且效率很高的鏡像給我們使用,基本都不需要自己動手配置容器環境但是由於過於註重鏡像純凈跟效率的原因大部分鏡像裡面基本就只有跟當前需要環境相關的工具跟Linux配置,一點多餘的東西都沒有。這就苦逼了我這種二手的運維菜雞了,容器已啟動一進去發現Linux環境下連一個普通Linux環境必備的vi命令都沒有更別說其他的網路查看工具了。迫於處女座的潔癖,被迫把除了伺服器環境意外的所有常用工具都得自己挨個爬一次坑吧。畢竟如果把這些東西弄一遍我就可能不再是二手的菜雞了。

在爬坑的過程中可能甚至必然會遇到發現了一個問題需要解決但是又引起了無數個新的知識點需要補充。所以這條爬坑之路可能會很難去歸類,也沒有太多時間去歸類,唯有爬到哪就記錄到哪了!!!!

以下內容大部分都來源於其他博客或者書籍查詢到的結果。經過自己實踐可以沒問題才記錄上來方便以後查看!!!

本坑是在docker官方鏡像(ubuntu:latest)的環境下完成,ubuntu版本是Ubuntu 18.04.1 LTS。其他版本的坑可能會略有不同。請慎重

以下觀點只代表菜鳥言論,大神路過勿噴


 

 

實際上所謂的Linux工具實際上很多人有自己的叫法,大致統計下基本有這幾種統稱:命令、程式、工具、服務、軟體。其實都是通過不同的安裝方式安裝到Linux環境下,直接使用的。一般的簡單工具安裝好後一般都會在/bin目錄下看到它們的身影(還有些特殊的可能會在其他的地方這裡不深究,知道這個意思就行),只不過使用的時候不同的命令工具會有自身特色的傳參方式而已例如:

root@454009d432a4:/bin# netstat  -anp

 

1.Linux工具安裝最常用的一種方法就是 apt系列命令

最常用的就是apt-get、apt-cache:apt-get 用來更新、刪除、安裝各種命令用,apt-cache用來搜索、查看各種命令信息。

第一次進來首要任務肯定是先執行apt-get update線上更新下所有工具包的最新列表,保證安裝工具的時候使用的是最新的源以免報錯掉到無盡的坑裡。最後安裝常用的網路檢測工具net-tools,這個包下麵包括常用的netstat、ifconfig等命令(之前沒搞懂之前還以為netstat命令是獨立安裝的,所以通過apt-cache search搜索到的包安裝後根本就不是那麼回事。後來找了資料才知道是在這個包里)。

root@454009d432a4:/bin# apt-get update              //更新資源列表
root@454009d432a4:/bin# apt-cache search net-tools        //搜索net-tools這個工具包確認存在
net-tools - NET-3 networking toolkit
atm-tools - Base programs for ATM in Linux, the net-tools for ATM
ddnet-tools - Tools for DDNet
root@454009d432a4:/bin# apt-get install net-tools      //安裝網路工具包
........
........
root@454009d432a4:/bin# netstat              //安裝完成執行netstat命令看下是否正常
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node   Path


root@454009d432a4:/bin# ifconfig            //安裝完成執行ifconfig命令看下是否正常
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
        RX packets 21  bytes 1598 (1.5 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0



附上一張基本網路工具圖(http://www.docin.com/p-1852435799.html)

 

2.Linux後臺定時任務進程工具cron

這是一個伺服器實現定時任務或者

root@454009d432a4:/bin# apt-cache search cron        //搜索cron資源
anacron - cron-like program that doesn't go by time
cron - process scheduling daemon                //要找的正主
dict-vera - Dictionary of computer related acronyms -- dict format
python-croniter - provides iteration for datetime object with cron like format -
 Python 2.x
......
......
......
root@454009d432a4:/bin# apt-get install cron      //安裝cron組件
Reading package lists... Done
Building dependency tree
Reading state information... Done
...
...
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
root@454009d432a4:/bin# cron            //確認是否已經命令(輸入cron雙擊tab按鍵自動提示)
cron     crontab


root@454009d432a4:/bin# crontab -e      //編輯定時任務文件
no crontab for root - using an empty one           //what?報錯,沒有文本編輯器,這就是docker鏡像的坑,缺少很多基本的Linux工具,都需要自己一個一個安裝
update-alternatives: error: no alternatives for editor
/usr/bin/sensible-editor: 25: /usr/bin/sensible-editor: editor: not found
/usr/bin/sensible-editor: 28: /usr/bin/sensible-editor: nano: not found
/usr/bin/sensible-editor: 31: /usr/bin/sensible-editor: nano-tiny: not found
/usr/bin/sensible-editor: 34: /usr/bin/sensible-editor: vi: not found
Couldn't find an editor!
Set the $EDITOR environment variable to your desired editor.
crontab: "/usr/bin/sensible-editor" exited with status 1    //報錯後自動退出程式
root@454009d432a4:/bin#
//忽略掉文本編輯器接著cron工具使用方法

root@454009d432a4:/# service cron status  //檢查cron服務是否已開啟
 * cron is not running
root@454009d432a4:/bin# crontab -e      //編輯定時任務文件如果已經安裝過文本編輯器會是直接進入文本編輯模式進行編輯定時任務
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
#定時任務命令格式
#
# m h  dom mon dow  command
# m:分鐘 取值範圍: 0-59 當為*時表示每分鐘
# h:小時 取值範圍: 0-23 當為*時表示每小時
# dom:天 取值範圍: 1-31 當為*時表示每天
# mon:月 取值範圍: 1-12 當為*時表示每月
# dow:星期 取值範圍: 1-6 0表示星期天 當為*時表示每周
# command:當符合當前時間條件的時候要執行的命令,可以是純命令也可以是執行固定的shell腳本
# 以上m h  dom mon dow  command格式中的變數必須都要有值,每個變數中以空格分割詳細說明見下麵的鏈接
# https://www.cnblogs.com/angel_kiki/p/5266699.html
# 如下:每分鐘將當前時間寫入指定文本中
* * * * * date >> ~/check.log



root@454009d432a4:/# service cron start //啟動指定服務
root@454009d432a4:/# service cron restart //重啟指定服務
root@454009d432a4:/# service cron status
 * cron is running        //服務正在運行中,找到指定的文件打開看看有沒有數據就知道有沒有執行成功了

root@454009d432a4:/# service cron stop   //停止指定服務

以上資料來源:https://www.cnblogs.com/angel_kiki/p/5266699.html

 

 

 

3.Linux文本編輯器vi、vim基於vim是vi的升級版所以這裡選擇vim

 

 

root@454009d432a4:/# apt-get install vim  //安裝vim
root@454009d432a4:/# vim /root/check.log  //編輯指定文件
Thu Sep 27 10:27:01 UTC 2018
Thu Sep 27 10:28:01 UTC 2018
Thu Sep 27 10:29:01 UTC 2018
~
~

 

vi、vim詳細操作參考以下地址(個人感覺描述的挺詳細具體的):https://blog.csdn.net/williamfan21c/article/details/56495261

 

 

 

 

 

 

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 客戶端對文件的分割: ind.IsBusy = true; ind.Text = "上傳中...."; string cs_str = "server=" + GlobalVars.g_ServerID + "&userid="+GlobalVars.g_userID; string url = G ...
  • 預處理器指令指導編譯器在實際編譯開始之前對信息進行預處理。所有的預處理器指令都是以 # 開始。 #define 預處理器指令創建符號常量。#define 允許您定義一個符號,這樣,通過使用符號作為傳遞給 #if 指令的表達式,表達式將返回 true。在程式調試和運行上有重要的作用。比如預處理器指令可 ...
  • 由於項目需要,所以寫了下麵一段添加水印的代碼,如下: 後臺代碼: /// /// 上傳圖片 /// ///文件 ///保存的文件夾名稱 [HttpPost] public ActionResult UpLoadingImg(HttpPostedFileBase upfile, string file ...
  • 一、前言 1、本文主要內容 ASP.NET Core MVC路由工作原理概述 ASP.NET Core MVC帶路徑參數的路由示例 ASP.NET Core MVC固定前/尾碼的路由示例 ASP.NET Core MVC正則表達式匹配路由示例 ASP.NET Core MVC路由約束與自定義路由約束 ...
  • 1.添加初始化數據(Seed) 我們可以在初始化資料庫的過程中給資料庫添加一些數據。為了實現初始化數據(seed data)我們必須創建一個自定義的資料庫初始化器(DB initializer),並重寫其中的Seed方法。 下邊的慄子展示在School資料庫中給Standard表添加預設的數據: 第 ...
  • 飛思卡爾半導體(現恩智浦半導體)2017年推出的i.MX RT系列第一款晶元i.MXRT1052,搭載Cortex-M7內核,主頻高達600MHz,CoreMark跑分高達3020,這種高性能MCU給嵌入式端Audio處理帶來了可能,因此我們可以藉助這類高性能MCU實現實時板級Audio處理(降噪、... ...
  • 最近學習Linux,最大的體驗就是它的很多東西都需要由命令來進行控制,下麵是我總結的一些命令,供大家參考: 系統信息 arch 顯示機器的處理器架構 uname -m 顯示機器的處理器架構 uname -r 顯示正在使用的內核版本 dmidecode -q 顯示硬體系統部件 - (SMBIOS / ...
  • CPU發佈控制命令控制數據是流入記憶體還是流出記憶體,CPU處理的數據全部是來自記憶體的。 CPU的種類: 根據內部的微指令集來區分(CPU依靠(運行)指令碼) 精簡指令集(RISC):例如升陽(sun)的SPARC系列、IBM的PowerPC系列、ARM系列。 複雜指令集(CISC):x86架構的cpu ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...