2024-09-13|閱讀時間 ‧ 約 5 分鐘

【Linux】從字型檔案處理,熟悉環境指令

Linux系統,你熟嗎?」
基本的切換目錄、搬檔、編輯都還行,不過沒什麼機會用到就是了。」
OK足夠了,我們去要權限帳號吧!」


入門

最近在公司與資深前輩協同處理難字檔案的問題,了解一下狀況,才知道這問題其實已經存在了一年多,期間陸陸續續進行測試,但都沒有一個比較明確、系統化的結論,因此希望我們可以釐清脈絡,整理成說明文件。

看著系統架構部門同事操作一遍,開啟PuTTY後輸入帳號密碼,跳出終端機視窗,最後提供了重啟伺服器bash腳本的路徑位置,剩下的只能靠我們自己想辦法測出符合預期的結果了。


Git bash已經有安裝了ssh,沒有PuTTY並不影響作業,只要輸入ssh指令後,視窗跳出輸入密碼的提示,就是成功請求登入的訊號了。

例如:

# ssh 帳號名稱@ip,表示以該帳號透過ssh連接至ip位置的主機
ssh sysadmin@10.1.111.1

# 注意! 密碼輸入時,終端機顯示會進行遮蔽,看不到輸入內容是正常現象


連線成功後,就可以在終端機內進行對Linux主機的操作,可以想像成遠端控制其他電腦,只不過沒有圖形化視窗。

當然,VScode也是有擴充套件支援ssh讓使用者可以用一般瀏覽資料夾的方式進行異動,但在熟悉了指令後,除了操作上比較彈性且有效率,有時會遇到檔案異動權限不足,所以之後還是以使用終端機進行處理為主。


字型檔案路徑

查了網路上各種資訊,主要字型檔案會放置在下列兩個地方:

  1. ${JAVA_HOME}/jre/lib/fontJDK1.8版本以前,jre內有font作為部分報表軟體產製時所使用的字體來源,JDK 9以後認為在jre內可以客製字型是個bug,所以之後版本的JDK都找不到這個資料夾了。
  2. /usr/share/fontsLinux系統上字型檔位置。


測試步驟

  1. 從本機Windows系統上取得EUDC.ttf(End User Defined Characters),如字面上意思,是使用者自定義的字元字型檔案,用來處理難字顯示。
  2. 將本機字型檔透過SFTP傳輸至遠端Linux主機上。
  3. 將字型檔分別放到前述位置進行測試,執行字型指令清理快取及檢視載入狀況。
  4. 確認測試案例分別在網頁預覽及報表列印呈現狀況。
  5. 如果字型未生效,則需進行伺服器重新啟動,再進行測試案例確認。
  6. 重複2~5,逐一測試字型檔案。


問題

Q1. 明明字型檔案已經放進去指定位置,伺服器也進行重啟,為什麼還是沒有生效?

/usr/share/fonts位置上的字型檔案,要確認一下檔案權限是不是有提供讀取權限給其他使用者。為此問題才終於認真看了一下Linux的權限控管機制,777644是怎麼決定的,意外一併解開了我最初學習golang建立檔案時參數的疑問。

Q2. 系統上進行檔案處理,為什麼會出現Permission denied?

可能是登入主機使用的帳號權限不足,如果帳號有被賦予權限,可以在指令前面加上sudo(Super User DO)進行異動。
例如:sudo list filename


指令

以下列出會用到的指令,詳細的用法都可以在指令後面加上--help查看說明
例如:ls --help

基本指令

cd  								# change directory 切換目錄
ls # list 顯示清單列表
cp # copy 複製檔案
mv # move 移動檔案
pwd # print working directory 印出工作目錄,即當前所在位置
cat # 檢視檔案內容


字型指令

fc-cache -fv			# 清理字型快取檔案
fc-list # 顯示當前系統字型清單​
fc-match # 特定字型所使用的檔案來源


權限指令

chmod							# 更改檔案權限	(||執行)
chown # 更改檔案擁有者


查找指令

grep								# global regular expression 搜索檔案特定內容
find # 查找特定檔案名稱
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.