Linux SSD磁盤的優(yōu)化配置指南
在現(xiàn)代 Linux 系統(tǒng)中,固態(tài)硬盤(SSD)已經(jīng)成為主流存儲設(shè)備。相比傳統(tǒng)機(jī)械硬盤(HDD),SSD 具有更快的讀寫速度、更低的延遲和更高的 IOPS,但同時也對操作系統(tǒng)提出了新的優(yōu)化需求。不恰當(dāng)?shù)呐渲每赡軐?dǎo)致 SSD 壽命縮短、性能下降或系統(tǒng)響應(yīng)遲緩。本文將深入探討如何在 Linux 環(huán)境下對 SSD 進(jìn)行全面優(yōu)化,涵蓋文件系統(tǒng)選擇、掛載參數(shù)調(diào)優(yōu)、I/O 調(diào)度器設(shè)置、TRIM 支持、日志與臨時文件管理、swap 配置、Java 應(yīng)用適配等多個方面,并輔以 Java 代碼示例、性能對比圖表和實用工具推薦。
為什么需要為 SSD 專門優(yōu)化?
雖然現(xiàn)代 Linux 內(nèi)核已經(jīng)具備一定的自動識別和優(yōu)化能力,但默認(rèn)配置往往偏向通用性和兼容性,未必能充分發(fā)揮 SSD 的全部潛力。以下是幾個關(guān)鍵原因:
- 寫入放大(Write Amplification):SSD 的寫入操作需先擦除再寫入,頻繁的小塊隨機(jī)寫入會顯著降低壽命。
- 無序?qū)懭胗绊憠勖?/strong>:SSD 的閃存單元有寫入次數(shù)限制(P/E cycles),不當(dāng)?shù)娜罩净蚓彺娌呗钥赡芗铀倌p。
- 缺乏 TRIM 支持會導(dǎo)致性能衰減:未及時通知控制器哪些塊已廢棄,會導(dǎo)致垃圾回收效率低下。
- 默認(rèn) I/O 調(diào)度器不適合 SSD:CFQ 或 Deadline 可能在 SSD 上引入不必要的延遲。
- 過度的日志記錄浪費 I/O 資源:如 syslog、journald 默認(rèn)配置對 SSD 不友好。
優(yōu)化目標(biāo):延長 SSD 壽命 + 提升系統(tǒng)響應(yīng)速度 + 降低寫入負(fù)載 + 保持長期穩(wěn)定性能
第一步:檢查當(dāng)前磁盤類型與健康狀態(tài)
在開始優(yōu)化前,務(wù)必確認(rèn)你正在操作的是 SSD,而非 HDD。同時評估其健康狀況,避免在已有故障的設(shè)備上做無用功。
# 查看塊設(shè)備信息 lsblk -d -o name,rota # rota=0 表示是 SSD,rota=1 是 HDD
# 使用 smartctl 檢查 SSD 健康(需安裝 smartmontools) sudo smartctl -a /dev/nvme0n1 # 或 SATA SSD: sudo smartctl -a /dev/sda
關(guān)注以下 SMART 屬性:
Media_Wearout_Indicator(Intel)或Percentage Used(NVMe)Reallocated_Sector_CtUncorrectable_Error_Cnt
文件系統(tǒng)選擇與掛載優(yōu)化
推薦文件系統(tǒng)
目前主流 Linux 發(fā)行版支持多種文件系統(tǒng),針對 SSD 最推薦的是:
- ext4:成熟穩(wěn)定,廣泛支持,易于維護(hù)
- Btrfs:支持透明壓縮、快照、RAID,適合進(jìn)階用戶
- XFS:大文件性能優(yōu)異,元數(shù)據(jù)操作快
- F2FS:專為閃存設(shè)計,特別適合嵌入式或移動端,但在桌面/服務(wù)器環(huán)境穩(wěn)定性待驗證
實測建議:日常使用選 ext4;追求極致性能且愿意承擔(dān)風(fēng)險可嘗試 F2FS
掛載參數(shù)調(diào)優(yōu)(/etc/fstab)
編輯 /etc/fstab,為 SSD 分區(qū)添加優(yōu)化參數(shù):
UUID=xxxx-xxxx / ext4 defaults,noatime,nodiratime,discard,errors=remount-ro 0 1
參數(shù)詳解:
noatime:禁止記錄文件訪問時間,大幅減少寫入nodiratime:同上,僅針對目錄(noatime 已隱含此功能)discard:啟用在線 TRIM(爭議較大,見下文)commit=60:延遲提交,每 60 秒寫入一次日志(ext4 特有)
注意:discard 在某些內(nèi)核或 SSD 固件下可能引起卡頓,替代方案是使用 fstrim.timer
啟用 TRIM —— 保持長期性能的關(guān)鍵
TRIM 命令允許操作系統(tǒng)通知 SSD 哪些數(shù)據(jù)塊已不再使用,從而讓控制器提前進(jìn)行垃圾回收,避免寫入放大。
方法一:fstab 中啟用 discard(在線 TRIM)
已在上文介紹,適用于大多數(shù)現(xiàn)代 SSD 和內(nèi)核(≥4.0)。
方法二:定時 TRIM(推薦)
更安全、可控的方式是使用 systemd 定時任務(wù):
# 啟用每周自動 TRIM sudo systemctl enable fstrim.timer sudo systemctl start fstrim.timer # 手動執(zhí)行一次 sudo fstrim -av
輸出示例:
/:8.2 GiB (8796093030 bytes) 已修剪 /boot:120 MiB (125829120 bytes) 已修剪
性能對比:啟用 TRIM 前后 I/O 效率變化

從圖中可見,TRIM 對維持 SSD 長期性能至關(guān)重要。沒有 TRIM,SSD 會在使用幾個月后出現(xiàn)明顯的寫入降速。
I/O 調(diào)度器優(yōu)化
Linux 使用 I/O 調(diào)度器管理磁盤請求隊列。傳統(tǒng)調(diào)度器如 CFQ(Completely Fair Queuing)為 HDD 設(shè)計,不適合 SSD。
查看當(dāng)前調(diào)度器
cat /sys/block/sda/queue/scheduler # 輸出示例:[mq-deadline] kyber bfq none
設(shè)置為 noop 或 none(適用于 NVMe)
對于 NVMe SSD,推薦使用 none(無調(diào)度):
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
對于 SATA SSD,可選 deadline 或 mq-deadline:
echo 'mq-deadline' | sudo tee /sys/block/sda/queue/scheduler
永久生效方法
創(chuàng)建 udev 規(guī)則:
sudo nano /etc/udev/rules.d/60-ssd-scheduler.rules
內(nèi)容:
# NVMe SSD
ACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/scheduler}="none"
# SATA SSD
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline"重啟或重新加載 udev:
sudo udevadm control --reload-rules sudo udevadm trigger
減少不必要的寫入 —— 日志與臨時文件優(yōu)化
SSD 最怕頻繁小文件寫入。優(yōu)化方向:
- 減少系統(tǒng)日志寫入頻率
- 將臨時目錄掛載到內(nèi)存(tmpfs)
- 禁用訪問時間更新
1. 使用 tmpfs 掛載 /tmp 和 /var/log
編輯 /etc/fstab:
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0 tmpfs /var/log tmpfs defaults,noatime,mode=0755,size=1G 0 0 tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
注意:/var/log 掛載為 tmpfs 會導(dǎo)致重啟后日志丟失。如需保留,可改用日志輪轉(zhuǎn) + 壓縮策略。
2. 優(yōu)化 journald(systemd 日志)
編輯 /etc/systemd/journald.conf:
[Journal] Storage=volatile # 僅內(nèi)存存儲,重啟清空 Compress=yes # 啟用壓縮 MaxRetentionSec=1day # 最多保留1天 RateLimitIntervalSec=30s RateLimitBurst=1000 # 限流防刷爆 ForwardToSyslog=no # 不轉(zhuǎn)發(fā)給 syslog
重啟服務(wù):
sudo systemctl restart systemd-journald
3. 限制 rsyslog/syslog-ng 寫入
如果你仍使用傳統(tǒng) syslog,建議:
- 降低日志級別
- 啟用日志輪轉(zhuǎn)壓縮
- 定期清理舊日志
示例(rsyslog):
sudo nano /etc/rsyslog.conf
添加:
*.info;mail.none;authpriv.none;cron.none /var/log/messages & stop
并配置 logrotate:
sudo nano /etc/logrotate.d/custom
/var/log/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 root adm
}
Swap 配置優(yōu)化
Swap 在 SSD 上是可以使用的,但需合理配置以減少寫入磨損。
1. 降低 swappiness
swappiness 控制內(nèi)核傾向使用 swap 的程度(0~100,默認(rèn) 60)。SSD 建議設(shè)為 10 或更低:
# 臨時設(shè)置 sudo sysctl vm.swappiness=10 # 永久設(shè)置 echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
2. 使用 zram 替代部分 swap(推薦)
zram 在內(nèi)存中創(chuàng)建壓縮塊設(shè)備作為 swap,幾乎無 I/O 開銷:
sudo apt install zram-tools # Ubuntu/Debian sudo systemctl enable zramswap sudo systemctl start zramswap
查看狀態(tài):
zramctl free -h
Java 應(yīng)用在 SSD 上的優(yōu)化實踐
Java 應(yīng)用常涉及大量臨時文件、日志寫入和堆外內(nèi)存映射,若不加優(yōu)化,極易造成 SSD 寫入壓力。以下是幾種典型場景及優(yōu)化方案。
示例 1:減少 JVM GC 日志寫入頻率
默認(rèn) -Xloggc 會持續(xù)追加日志,對 SSD 不友好。建議:
- 使用滾動日志
- 限制文件大小
- 異步寫入
// 啟動參數(shù)示例 java \ -XX:+UseG1GC \ -Xloggc:/tmp/gc.log \ -XX:+UseGCLogFileRotation \ -XX:NumberOfGCLogFiles=5 \ -XX:GCLogFileSize=10M \ -XX:+PrintGCDetails \ -XX:+PrintGCDateStamps \ -jar MyApp.jar
更進(jìn)一步,可將 GC 日志輸出到內(nèi)存文件系統(tǒng):
mkdir -p /tmp/applogs java -Xloggc:/tmp/applogs/gc.log ...
示例 2:優(yōu)化臨時文件路徑
Java 默認(rèn)使用 /tmp,可通過環(huán)境變量重定向:
export TMPDIR=/dev/shm/myapp mkdir -p $TMPDIR java -Djava.io.tmpdir=$TMPDIR -jar MyApp.jar
或在代碼中動態(tài)設(shè)置:
public class TempDirConfig {
public static void main(String[] args) {
// 設(shè)置臨時目錄為內(nèi)存盤
System.setProperty("java.io.tmpdir", "/dev/shm/myapp");
File tempDir = new File(System.getProperty("java.io.tmpdir"));
if (!tempDir.exists()) {
tempDir.mkdirs();
}
try {
File tempFile = File.createTempFile("data-", ".tmp", tempDir);
System.out.println("臨時文件創(chuàng)建于: " + tempFile.getAbsolutePath());
// ... 業(yè)務(wù)邏輯
} catch (IOException e) {
e.printStackTrace();
}
}
}示例 3:日志框架異步化 + 緩沖寫入
使用 Logback 或 Log4j2 時,啟用異步日志器可大幅降低 I/O 壓力。
Logback 配置(logback.xml):
<configuration>
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="FILE"/>
<queueSize>512</queueSize>
<discardingThreshold>0</discardingThreshold>
<includeCallerData>false</includeCallerData>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/tmp/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>/tmp/app.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>7</maxHistory>
<totalSizeCap>100MB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="ASYNC"/>
</root>
</configuration>Log4j2 配置(log4j2.xml):
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RandomAccessFile name="File" fileName="/tmp/app.log"
filePattern="/tmp/app-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="10 MB"/>
<TimeBasedTriggeringPolicy/>
</Policies>
<DefaultRolloverStrategy max="7"/>
</RandomAccessFile>
<Async name="AsyncFile">
<AppenderRef ref="File"/>
</Async>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="AsyncFile"/>
</Root>
</Loggers>
</Configuration>異步日志 + 滾動壓縮 + 內(nèi)存路徑 = SSD 友好型日志方案
監(jiān)控 SSD 健康與性能
優(yōu)化不是一勞永逸的,需持續(xù)監(jiān)控。推薦以下工具:
1. iotop —— 實時 I/O 監(jiān)控
sudo apt install iotop sudo iotop -aoP # 顯示累計寫入最多的進(jìn)程
2. iostat —— 設(shè)備級統(tǒng)計
iostat -x 1 /dev/nvme0n1
關(guān)注 %util、await、svctm 等字段。
3. nvme-cli(NVMe 專用)
sudo nvme smart-log /dev/nvme0n1 sudo nvme list
4. 自定義監(jiān)控腳本(Shell + Java)
下面是一個簡單的 Java 程序,定期采集磁盤寫入量并記錄:
import java.io.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class SSDWriteMonitor {
private static final String PROC_DISKSTATS = "/proc/diskstats";
private static final String TARGET_DEVICE = "nvme0n1"; // 修改為你的設(shè)備名
private static final String LOG_FILE = "/tmp/ssd_monitor.log";
public static void main(String[] args) throws Exception {
System.out.println("SSD 寫入監(jiān)控啟動...");
long lastWriteSectors = readWriteSectors();
long startTime = System.currentTimeMillis();
while (true) {
Thread.sleep(60000); // 每分鐘采樣一次
long currentWriteSectors = readWriteSectors();
long deltaSectors = currentWriteSectors - lastWriteSectors;
double mbWritten = deltaSectors * 512.0 / (1024 * 1024); // 轉(zhuǎn)換為 MB
String timestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
String logEntry = String.format("[%s] 寫入: %.2f MB", timestamp, mbWritten);
System.out.println(logEntry);
appendToFile(logEntry);
lastWriteSectors = currentWriteSectors;
}
}
private static long readWriteSectors() throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(PROC_DISKSTATS))) {
String line;
while ((line = br.readLine()) != null) {
if (line.contains(TARGET_DEVICE)) {
String[] parts = line.trim().split("\\s+");
// 第7列為已寫扇區(qū)數(shù)(每個扇區(qū)512字節(jié))
return Long.parseLong(parts[6]);
}
}
}
throw new RuntimeException("未找到設(shè)備: " + TARGET_DEVICE);
}
private static void appendToFile(String content) {
try (FileWriter fw = new FileWriter(LOG_FILE, true);
BufferedWriter bw = new BufferedWriter(fw)) {
bw.write(content);
bw.newLine();
} catch (IOException e) {
e.printStackTrace();
}
}
}編譯運行:
javac SSDWriteMonitor.java java SSDWriteMonitor
輸出示例:
[2025-04-05 10:30:00] 寫入: 128.45 MB [2025-04-05 10:31:00] 寫入: 67.21 MB [2025-04-05 10:32:00] 寫入: 203.89 MB
高級技巧:使用 LVM + SSD 緩存
如果你同時擁有 SSD 和 HDD,可構(gòu)建混合存儲池,用 SSD 作為緩存層加速訪問。
步驟概覽:
- 創(chuàng)建物理卷(PV)
- 創(chuàng)建卷組(VG)
- 創(chuàng)建邏輯卷(LV)
- 創(chuàng)建緩存池(Cache Pool)
- 將緩存池附加到 LV
# 假設(shè) /dev/sda 是 HDD,/dev/nvme0n1p3 是 SSD 分區(qū) sudo pvcreate /dev/sda /dev/nvme0n1p3 sudo vgcreate vg_hybrid /dev/sda /dev/nvme0n1p3 sudo lvcreate -L 500G -n lv_data vg_hybrid /dev/sda # 創(chuàng)建緩存池(使用 SSD) sudo lvcreate --type cache-pool -L 20G -n cache_pool vg_hybrid /dev/nvme0n1p3 # 將緩存池綁定到數(shù)據(jù)卷 sudo lvconvert --type cache --cachepool vg_hybrid/cache_pool vg_hybrid/lv_data
現(xiàn)在 lv_data 就是一個帶 SSD 緩存的混合卷,熱數(shù)據(jù)自動緩存在 SSD,冷數(shù)據(jù)留在 HDD。
SSD 壽命估算模型
SSD 壽命通常以“總寫入字節(jié)數(shù)”(TBW, Terabytes Written)衡量??赏ㄟ^以下公式粗略估算剩余壽命:
渲染錯誤: Mermaid 渲染失敗: Parsing failed: Lexer error on line 3, column 5: unexpected character: ->“<- at offset: 29, skipped 5 characters. Lexer error on line 3, column 11: unexpected character: ->×<- at offset: 35, skipped 1 characters. Lexer error on line 3, column 13: unexpected character: ->P<- at offset: 37, skipped 3 characters. Lexer error on line 3, column 17: unexpected character: ->次<- at offset: 41, skipped 3 characters. Lexer error on line 3, column 21: unexpected character: ->:<- at offset: 45, skipped 1 characters. Lexer error on line 4, column 5: unexpected character: ->“<- at offset: 54, skipped 10 characters. Lexer error on line 4, column 16: unexpected character: ->:<- at offset: 65, skipped 1 characters. Lexer error on line 5, column 5: unexpected character: ->“<- at offset: 74, skipped 10 characters. Lexer error on line 5, column 16: unexpected character: ->:<- at offset: 85, skipped 1 characters. Lexer error on line 6, column 5: unexpected character: ->“<- at offset: 94, skipped 13 characters. Lexer error on line 6, column 19: unexpected character: ->:<- at offset: 108, skipped 1 characters. Parse error on line 3, column 23: Expecting token of type 'EOF' but found `45`. Parse error on line 4, column 18: Expecting token of type 'EOF' but found `25`. Parse error on line 5, column 18: Expecting token of type 'EOF' but found `15`. Parse error on line 6, column 21: Expecting token of type 'EOF' but found `15`.
舉例:
- 一塊 512GB SSD,標(biāo)稱 TBW = 300TB
- 當(dāng)前已寫入 50TB
- 剩余壽命比例 = (300 - 50) / 300 = 83.3%
通過 smartctl 獲取已寫入量:
sudo smartctl -A /dev/nvme0n1 | grep "Data Units Written"
換算公式:
已寫入 TB = (Data Units Written × 512 × 1000) / (1024^4)
常見誤區(qū)與反模式
誤區(qū) 1:完全禁用 swap
雖然減少 swap 使用有益 SSD 壽命,但完全禁用可能導(dǎo)致 OOM Killer 殺死關(guān)鍵進(jìn)程。建議保留少量 swap + 低 swappiness。
誤區(qū) 2:頻繁手動 TRIM
fstrim 每周執(zhí)行一次足夠。每天甚至每小時執(zhí)行反而增加控制器負(fù)擔(dān)。
誤區(qū) 3:不分青紅皂白使用 discard
某些老舊 SSD 固件對 discard 支持不佳,會導(dǎo)致卡頓。建議先測試:
sudo fstrim -v / # 觀察是否卡頓或報錯
誤區(qū) 4:忽略固件更新
SSD 固件更新常包含性能優(yōu)化和 bug 修復(fù)。定期檢查廠商提供的 Linux 更新工具。
企業(yè)級 SSD 優(yōu)化補充
在數(shù)據(jù)中心或高負(fù)載環(huán)境中,還需考慮:
- NUMA 綁定:確保 I/O 線程與本地 NUMA 節(jié)點綁定
- IRQ 平衡:分散中斷到多個 CPU 核心
- 多隊列深度調(diào)優(yōu):NVMe 支持多隊列,應(yīng)匹配 CPU 核心數(shù)
- 預(yù)讀關(guān)閉:SSD 隨機(jī)讀性能好,無需大預(yù)讀
# 查看當(dāng)前隊列深度 cat /sys/block/nvme0n1/queue/nr_requests # 調(diào)整(根據(jù)負(fù)載測試調(diào)整) echo 1024 | sudo tee /sys/block/nvme0n1/queue/nr_requests
總結(jié):SSD 優(yōu)化 Checklist
? 檢查磁盤類型與健康狀態(tài)
? 選用合適文件系統(tǒng)(推薦 ext4)
? fstab 添加 noatime,nodiratime,discard
? 啟用 fstrim.timer 定期 TRIM
? I/O 調(diào)度器設(shè)為 none(NVMe)或 mq-deadline(SATA)
? 使用 tmpfs 掛載 /tmp, /var/log
? 降低 swappiness 至 10,啟用 zram
? Java 應(yīng)用使用異步日志 + 內(nèi)存臨時目錄
? 監(jiān)控寫入量與 SMART 健康值
? 避免常見誤區(qū)(如頻繁 TRIM、完全禁用 swap)
結(jié)語
SSD 的普及極大提升了 Linux 系統(tǒng)的整體響應(yīng)速度和用戶體驗,但“即插即用”并不等于“最優(yōu)配置”。通過合理的文件系統(tǒng)選擇、掛載參數(shù)調(diào)優(yōu)、I/O 調(diào)度器設(shè)置、TRIM 維護(hù)以及應(yīng)用層適配(如 Java 日志異步化),我們不僅能延長 SSD 使用壽命,還能獲得更流暢、更穩(wěn)定的系統(tǒng)表現(xiàn)。
技術(shù)的進(jìn)步不應(yīng)止步于硬件升級,軟件層面的精細(xì)化調(diào)優(yōu)同樣重要。希望本文能為你提供一套完整、可落地的 SSD 優(yōu)化方案,在享受極速體驗的同時,守護(hù)好你的每一塊閃存芯片。
優(yōu)化無止境,適合自己的才是最好的。建議在生產(chǎn)環(huán)境變更前,先在測試機(jī)驗證效果。
以上就是Linux SSD磁盤的優(yōu)化配置指南的詳細(xì)內(nèi)容,更多關(guān)于Linux SSD磁盤優(yōu)化配置的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
pxe服務(wù)使用nfs和httpd服務(wù)配置uefi和legacy模式的pxe過程
本文詳細(xì)介紹了如何在Red Hat 7.4系統(tǒng)上搭建PXE服務(wù)器,包括安裝必要的軟件包(如DHCP、TFTP、NFS或HTTP服務(wù))、配置這些服務(wù)以及設(shè)置支持UEFI和Legacy啟動,文章還涵蓋了如何掛載安裝源、創(chuàng)建引導(dǎo)文件和配置系統(tǒng)鏡像2026-03-03
Centos 6.4 安裝Python 2.7 python-pip的詳細(xì)步驟
這篇文章主要介紹了Centos 6.4 安裝Python 2.7 python-pip的詳細(xì)步驟,需要的朋友可以參考下2017-03-03
CentOS7按時間段截取指定的Tomcat日志到指定文件的方法
這篇文章主要介紹了CentOS7按時間段截取指定的Tomcat日志到指定文件的方法的,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-11-11
在 Ubuntu Linux 上安裝 Oracle Java 14的方法
最近,Oracle 宣布 Java 14(或 Oracle JDK 14)公開可用。如果你想進(jìn)行最新的實驗或者開發(fā)的話,那么你可以試試在 Linux 系統(tǒng)上安裝 Java 14,感興趣的朋友可以參考下本文2020-04-04
Linux中的進(jìn)程守護(hù)supervisor安裝配置及使用
supervisor是一個很好的守護(hù)程序管理工具,配置方面自動啟動,日志輸出,自動切割日志等等一系列強(qiáng)大功能,下面是在CentOS下安裝使用supervisor的記錄,非常不錯,感興趣的朋友跟隨小編一起看看吧2019-07-07
Ubuntu 16.04與Apache虛擬主機(jī)配置的步驟詳解
這篇文章主要給大家介紹了關(guān)于Ubuntu 16.04與Apache虛擬主機(jī)配置的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用ubuntu16.04系統(tǒng)具有一定的參考學(xué)習(xí)價值,需要的朋友們來一起看看吧。2018-04-04

