十年 Linux 桌面生存指南
從 2006 年開始轉(zhuǎn)戰(zhàn) Linux 系統(tǒng)后,經(jīng)過幾年的實(shí)踐,我的軟件設(shè)置在過去十年內(nèi)出人意料的固定。再過十年回顧一下,看看發(fā)生了什么,也許會(huì)非常有趣。在寫這篇推文時(shí),我迅速回顧了正在運(yùn)行的內(nèi)容:
htop overview
動(dòng)機(jī)
我的軟件介紹排序不分先后:
- 程序應(yīng)該運(yùn)行在本地系統(tǒng)中以便我可以控制它,這其中并不包括云解決方案。
- 程序應(yīng)在終端中運(yùn)行,以便于在任何地方連貫地使用它們,包括性能稍差的電腦或手機(jī)。
- 通過使用終端軟件,可以實(shí)現(xiàn)自動(dòng)聚焦鍵盤。只有在一些有意義的地方,我會(huì)更喜歡使用鼠標(biāo),因?yàn)樵诖蜃制陂g一直伸手去拿鼠標(biāo)感覺像在浪費(fèi)時(shí)間。有時(shí)候過了一個(gè)小時(shí)我才注意到甚至還沒有插鼠標(biāo)。
- 最好使用快速高效的軟件,我不喜歡聽到風(fēng)扇的聲音和感到房間在變熱。我還可以繼續(xù)長(zhǎng)久地運(yùn)行舊硬件,已經(jīng)使用了 10 年的 Thinkpad x200s 還能很好地支持我所使用的軟件。
- 組合。我不想手動(dòng)執(zhí)行每個(gè)步驟,而是在需要時(shí)自動(dòng)執(zhí)行更多操作,這時(shí)自然是支持 shell。
操作系統(tǒng)
十二年前移除 Windows 系統(tǒng)后,我在 Linux 系統(tǒng)上經(jīng)歷了一個(gè)艱難的開始,當(dāng)時(shí)我手上只有Gentoo Linux 系統(tǒng)的安裝光盤和一本打印的說(shuō)明書,要用它們來(lái)實(shí)現(xiàn)一個(gè)可運(yùn)行的 Linux 系統(tǒng)。雖然花費(fèi)了幾天的時(shí)間去編譯和修整,但最終還是覺得自己受益頗多。
自此我再也沒有轉(zhuǎn)回 Windows 系統(tǒng),但在持續(xù)的編譯壓力導(dǎo)致風(fēng)扇失靈后,我將我的電腦系統(tǒng)切換到Arch Linux。之后我將其他的電腦和私人服務(wù)器也切換到了 Arch Linux。作為一個(gè)滾動(dòng)發(fā)布發(fā)行版,你可以隨時(shí)升級(jí)軟件包,但Arch Linux News 已經(jīng)詳細(xì)報(bào)道了其中最主要的漏洞。
不過,令人煩惱的是一旦你更新了舊的內(nèi)核模組,Arch Linux 就會(huì)移除舊版的相關(guān)信息。我經(jīng)常注意到一旦我試著插入一個(gè) USB 閃存盤,內(nèi)核就無(wú)法加載相關(guān)組件。相反,每次內(nèi)核升級(jí)后都應(yīng)該進(jìn)行重啟。有一些方法 可以解決這個(gè)問題,但我還沒有實(shí)際地使用它們。
其他程序也會(huì)出現(xiàn)類似的情況,通常 Firefox 、 cron 或者 Samba 在升級(jí)后都需要重啟,但惱人的是,它們沒有警告你存在這種情況。我在工作中使用的SUSE 很好地提醒了這種情況。
對(duì)于DDNet 產(chǎn)品服務(wù)器,我更喜歡使用 Arch Linux 的Debian 系統(tǒng),這樣在每次升級(jí)時(shí)出現(xiàn)故障的幾率更低。我的防火墻和路由器使用了OpenBSD ,它擁有干凈系統(tǒng)、文檔和強(qiáng)大的pf 防火墻,而我現(xiàn)在不需要一個(gè)單獨(dú)的路由器。
窗口管理器
從我開始使用 Gentoo 后,我很快注意到 KDE 的編譯時(shí)間非常長(zhǎng),這讓我沒辦法繼續(xù)使用它。我四處尋找更簡(jiǎn)單的解決方案,最初使用了Openbox 和Fluxbox。某次,為了能更多進(jìn)行純鍵盤操作,我開始嘗試轉(zhuǎn)入平鋪窗口管理器,并在研究其初始版本的時(shí)候?qū)W習(xí)了dwm 和awesome。
最終,由于xmonad的靈活性、可擴(kuò)展性以及使用純Haskell(一種出色的函數(shù)編程語(yǔ)言)編寫和配置,最終選擇了它。一個(gè)例子是,我在家中運(yùn)行一個(gè) 40" 4K 的屏幕,但經(jīng)常會(huì)將它分為四個(gè)虛擬屏幕,每個(gè)虛擬屏幕顯示一個(gè)工作區(qū),每個(gè)工作區(qū)自動(dòng)排列在我的窗口上。當(dāng)然, xmonad 有一個(gè)對(duì)應(yīng)的模塊。
dzen 和 conky 對(duì)我來(lái)說(shuō)是一個(gè)非常簡(jiǎn)單的狀態(tài)欄。我的整體 conky 配置看起來(lái)是這樣的:
- out_to_console yes
- update_interval 1
- total_run_times 0
- TEXT
- ${downspeed eth0} ${upspeed eth0} | $cpu% ${loadavg 1} ${loadavg 2} ${loadavg 3} $mem/$memmax | ${time %F %T}
輸入命令直接通過管道輸入 dzen2:
- conky | dzen2 -fn '-xos4-terminus-medium-r-normal-*-12-*-*-*-*-*-*-*' -bg '#000000' -fg '#ffffff' -p -e '' -x 1000 -w 920 -xs 1 -ta r
對(duì)我而言,一項(xiàng)重要功能是在完成工作后使終端發(fā)出蜂鳴聲。只需要簡(jiǎn)單地在 zsh 中的 PR_TITLEBAR
變量中添加一個(gè) \a
字符就可以做到,只要工作完成就可以發(fā)出蜂鳴聲。當(dāng)然,我使用了命令:
- echo "blacklist pcspkr" > /etc/modprobe.d/nobeep.conf
將 pcspkr
內(nèi)核模塊列入黑名單來(lái)禁用實(shí)際的蜂鳴聲。相反 urxvt 的 URxvt.urgentOnBell: true
設(shè)置會(huì)將聲音變?yōu)榧怃J。之后 xmonad 有一個(gè) urgency 鉤子來(lái)捕捉這類信號(hào),并且我可以使用組合鍵自動(dòng)聚焦到當(dāng)前的發(fā)出緊急信號(hào)的窗口。在 dzen 中我可以看到一個(gè)漂亮且明亮的 #ff0000
緊急窗口。
在我筆記本上所得到的最終成品是:
Laptop screenshot
我聽說(shuō)前幾年i3 變得非常流行,但它要求更多的手動(dòng)窗口對(duì)齊而不是自動(dòng)對(duì)齊。
我意識(shí)到也有像 tmux 那樣的終端多路復(fù)用器,但我仍想要一些圖形化應(yīng)用程序,因此最終我沒有有效地使用它們。
終端連續(xù)性
為了使終端保持活躍狀態(tài),我使用了dtach ,它只是模擬屏幕分離功能。為了使計(jì)算機(jī)上的每個(gè)終端都可連接和斷開,我編寫了一個(gè)小的封裝腳本。 這意味著,即使必須重新啟動(dòng) X 服務(wù)器,我也可以使所有終端都運(yùn)行良好,包括本地和遠(yuǎn)程終端。
Shell & 編程
對(duì)于 shell,我使用zsh 而不是bash,因?yàn)樗斜姸嗟墓δ堋?/p>
作為終端模擬,我發(fā)現(xiàn)urxvt 足夠輕巧,支持 Unicode 編碼和 256 色,具有出色的性能。另一個(gè)重要的功能是可以分別運(yùn)行 urxvt 客戶端和守護(hù)進(jìn)程。因此,即使大量終端也幾乎不占用任何內(nèi)存(回滾緩沖區(qū)除外)。
對(duì)我而言,只有一種字體看起來(lái)絕對(duì)干凈和完美:Terminus。 由于它是位圖字體,因此所有內(nèi)容都是完美像素,渲染速度極快且 CPU 使用率低。為了能使用 CTRL-WIN-[1-7]
在每個(gè)終端按需切換字體,我的 ~/.Xdefaults
包含:
- URxvt.font: -xos4-terminus-medium-r-normal-*-14-*-*-*-*-*-*-*
- dzen2.font: -xos4-terminus-medium-r-normal-*-14-*-*-*-*-*-*-*
- URxvt.keysym.C-M-1: command:\033]50;-xos4-terminus-medium-r-normal-*-12-*-*-*-*-*-*-*\007
- URxvt.keysym.C-M-2: command:\033]50;-xos4-terminus-medium-r-normal-*-14-*-*-*-*-*-*-*\007
- URxvt.keysym.C-M-3: command:\033]50;-xos4-terminus-medium-r-normal-*-18-*-*-*-*-*-*-*\007
- URxvt.keysym.C-M-4: command:\033]50;-xos4-terminus-medium-r-normal-*-22-*-*-*-*-*-*-*\007
- URxvt.keysym.C-M-5: command:\033]50;-xos4-terminus-medium-r-normal-*-24-*-*-*-*-*-*-*\007
- URxvt.keysym.C-M-6: command:\033]50;-xos4-terminus-medium-r-normal-*-28-*-*-*-*-*-*-*\007
- URxvt.keysym.C-M-7: command:\033]50;-xos4-terminus-medium-r-normal-*-32-*-*-*-*-*-*-*\007
- URxvt.keysym.C-M-n: command:\033]10;#ffffff\007\033]11;#000000\007\033]12;#ffffff\007\033]706;#00ffff\007\033]707;#ffff00\007
- URxvt.keysym.C-M-b: command:\033]10;#000000\007\033]11;#ffffff\007\033]12;#000000\007\033]706;#0000ff\007\033]707;#ff0000\007
對(duì)于編程和書寫,我使用Vim 語(yǔ)法高亮顯示和ctags 進(jìn)行索引,以及一些帶有 grep
、 sed
和其他用于搜索和操作的常用終端窗口。這可能不像 IDE 那樣舒適,但可以實(shí)現(xiàn)更多的自動(dòng)化。
Vim 的一個(gè)問題是你已經(jīng)習(xí)慣了它的鍵映射,因此希望在任何地方都使用它們。
在 shell 功能不夠強(qiáng)大時(shí),Python 和Nim 作為腳本語(yǔ)言也不錯(cuò)。
系統(tǒng)監(jiān)控
htop (查看當(dāng)前站點(diǎn)的后臺(tái)運(yùn)行,是托管服務(wù)器的實(shí)時(shí)視圖)非常適合快速了解軟件的當(dāng)前運(yùn)行狀態(tài)。lm_sensors 可以監(jiān)控硬件溫度、風(fēng)扇和電壓。powertop 是一款由 Intel 發(fā)布的優(yōu)秀省電小工具。ncdu 可以交互式分析磁盤使用情況。
nmap、 iptraf-ng、tcpdump 和Wireshark 都是分析網(wǎng)絡(luò)問題的基本工具。
當(dāng)然還有很多更優(yōu)秀的工具。
郵件 & 同步
在我的家庭服務(wù)器上,我為自己所有的郵箱賬號(hào)運(yùn)行了fetchmail 守護(hù)進(jìn)程。fetchmail 只是檢索收到的郵件并調(diào)用procmail:
- #!/bin/sh
- for i in /home/deen/.fetchmail/*; do
- FETCHMAILHOME=$i /usr/bin/fetchmail -m 'procmail -d %T' -d 60
- done
配置非常簡(jiǎn)單,然后等待服務(wù)器通知我們有新的郵件:
- poll imap.1und1.de protocol imap timeout 120 user "dennis@felsin9.de" password "XXX" folders INBOX keep ssl idle
我的 .procmailrc
配置包含一些備份全部郵件的規(guī)則,并將郵件整理在對(duì)應(yīng)的目錄下面。例如,基于郵件列表名或者郵件標(biāo)題:
- MAILDIR=/home/deen/shared/Maildir
- LOGFILE=$HOME/.procmaillog
- LOGABSTRACT=no
- VERBOSE=off
- FORMAIL=/usr/bin/formail
- NL="
- "
- :0wc
- * ! ? test -d /media/mailarchive/`date +%Y`
- | mkdir -p /media/mailarchive/`date +%Y`
- # Make backups of all mail received in format YYYY/YYYY-MM
- :0c
- /media/mailarchive/`date +%Y`/`date +%Y-%m`
- :0
- * ^From: .*(.*@.*.kit.edu|.*@.*.uka.de|.*@.*.uni-karlsruhe.de)
- $MAILDIR/.uni/
- :0
- * ^list-Id:.*lists.kit.edu
- $MAILDIR/.uni-ml/
- [...]
我使用msmtp 來(lái)發(fā)送郵件,它也很好配置:
- account default
- host smtp.1und1.de
- tls on
- tls_trust_file /etc/ssl/certs/ca-certificates.crt
- auth on
- from dennis@felsin9.de
- user dennis@felsin9.de
- password XXX
- [...]
但是到目前為止,郵件還在服務(wù)器上。 我的文檔全部存儲(chǔ)在一個(gè)目錄中,我使用Unison 在所有計(jì)算機(jī)之間進(jìn)行同步。Unison 可以視為雙向交互式rsync,我的郵件是這個(gè)文件目錄下的一部分,因此它們最終存儲(chǔ)在我的電腦上。
這也意味著,盡管郵件會(huì)立即到達(dá)我的郵箱,但我只是按需拿取,而不是郵件一到達(dá)時(shí)就立即收到通知。
從此我使用mutt 閱讀郵件,使用側(cè)邊欄顯示我的郵件目錄。 /etc/mailcap
文件對(duì)于顯示非純文本郵件( HTML, Word 或者 PDF)不可或缺:
- text/html;w3m -I %{charset} -T text/html; copiousoutput
- application/msword; antiword %s; copiousoutput
- application/pdf; pdftotext -layout /dev/stdin -; copiousoutput
新聞 & 通訊
Newsboat 是一個(gè)非常棒的終端 RSS/Atom 閱讀器。我在一個(gè)有約 150 個(gè)提要的 tach
會(huì)話服務(wù)器上運(yùn)行它。也可以在本地選擇提要,例如:
- ignore-article "https://forum.ddnet.tw/feed.php" "title =~ \"Map Testing •\" or title =~ \"Old maps •\" or title =~ \"Map Bugs •\" or title =~ \"Archive •\" or title =~ \"Waiting for mapper •\" or title =~ \"Other mods •\" or title =~ \"Fixes •\""
我以同樣的方式使用Irssi 進(jìn)行 IRC 通訊。
日歷
remind 是一個(gè)可以從命令行獲取的日歷。通過編輯 rem
文件可以設(shè)置新的提醒:
- # One time events
- REM 2019-01-20 +90 Flight to China %b
- # Recurring Holidays
- REM 1 May +90 Holiday "Tag der Arbeit" %b
- REM [trigger(easterdate(year(today()))-2)] +90 Holiday "Karfreitag" %b
- # Time Change
- REM Nov Sunday 1 --7 +90 Time Change (03:00 -> 02:00) %b
- REM Apr Sunday 1 --7 +90 Time Change (02:00 -> 03:00) %b
- # Birthdays
- FSET birthday(x) "'s " + ord(year(trigdate())-x) + " birthday is %b"
- REM 16 Apr +90 MSG Andreas[birthday(1994)]
- # Sun
- SET $LatDeg 49
- SET $LatMin 19
- SET $LatSec 49
- SET $LongDeg -8
- SET $LongMin -40
- SET $LongSec -24
- MSG Sun from [sunrise(trigdate())] to [sunset(trigdate())]
- [...]
遺憾的是,目前 remind 中還沒有中國(guó)農(nóng)歷的提醒功能,因此中國(guó)的節(jié)日不易計(jì)算。
我給提醒設(shè)置了兩個(gè)名字:
- rem -m -b1 -q -g
按時(shí)間順序查看待辦事項(xiàng)清單
- rem -m -b1 -q -cuc12 -w$(($(tput cols)+1)) | sed -e "s/\f//g" | less
顯示適應(yīng)終端寬度的日歷:
remcal
字典
rdictcc 是鮮為人知的字典工具,它可以使用dict.cc 很棒的詞典并將他們轉(zhuǎn)存在本地?cái)?shù)據(jù)庫(kù)中:
- $ rdictcc rasch
- ====================[ A => B ]====================
- rasch:
- - apace
- - brisk [speedy]
- - cursory
- - in a timely manner
- - quick
- - quickly
- - rapid
- - rapidly
- - sharpish [Br.] [coll.]
- - speedily
- - speedy
- - swift
- - swiftly
- rasch [gehen]:
- - smartly [quickly]
- Rasch {n} [Zittergras-Segge]:
- - Alpine grass [Carex brizoides]
- - quaking grass sedge [Carex brizoides]
- Rasch {m} [regional] [Putzrasch]:
- - scouring pad
- ====================[ B => A ]====================
- Rasch model:
- - Rasch-Modell {n}
記錄和閱讀
我有一個(gè)簡(jiǎn)單記錄任務(wù)的備忘錄,在 Vim 會(huì)話中基本上一直處于打開狀態(tài)。我也使用備忘錄作為工作中“已完成”工作的記錄,這樣就可以檢查自己每天完成了哪些任務(wù)。
對(duì)于寫文件、信件和演示文稿,我會(huì)使用LaTeX 進(jìn)行高級(jí)排版。德式的簡(jiǎn)單信件可以這樣設(shè)置,例如:
- \documentclass[paper = a4, fromalign = right]{scrlttr2}
- \usepackage{german}
- \usepackage{eurosym}
- \usepackage[utf8]{inputenc}
- \setlength{\parskip}{6pt}
- \setlength{\parindent}{0pt}
- \setkomavar{fromname}{Dennis Felsing}
- \setkomavar{fromaddress}{Meine Str. 1\\69181 Leimen}
- \setkomavar{subject}{Titel}
- \setkomavar*{enclseparator}{Anlagen}
- \makeatletter
- \@setplength{refvpos}{89mm}
- \makeatother
- \begin{document}
- \begin{letter} {Herr Soundso\\Deine Str. 2\\69121 Heidelberg}
- \opening{Sehr geehrter Herr Soundso,}
- Sie haben bei mir seit dem Bla Bla Bla.
- Ich fordere Sie hiermit zu Bla Bla Bla auf.
- \closing{Mit freundlichen Grüßen}
- \end{letter}
- \end{document}
在我的私人網(wǎng)站 上可以找到更多的示例文檔和演示文稿。
Zathura 讀取 PDF 文件速度很快,支持 Vim 類控件,還支持兩種不同的 PDF 后端: Poppler 和 MuPDF。另一方面,在偶爾遇到 Zathura 無(wú)法打開的文件時(shí),Evince 則顯得更全能一些。
圖片編輯
簡(jiǎn)便的選擇是,GIMP 和Inkscape 分別用于照片編輯和交互式向量圖形。
有時(shí)Imagemagick 已經(jīng)足夠好了,它可以從命令行直接使用,從而自動(dòng)編輯圖片。同樣Graphviz 和TikZ 可以用來(lái)繪制曲線圖和其他圖表。
Web 瀏覽器
對(duì)于 Web 瀏覽器,我一直在使用Firefox。相較于 Chrome,它的可擴(kuò)展性更好,資源使用率更低。
不幸的是,在 Firefox 完全改用 Chrome 風(fēng)格的擴(kuò)展之后, Pentadactyl 擴(kuò)展的開發(fā)就停止了,所以我的瀏覽器中再也沒有令人滿意的 Vim 類控件了。
媒體播放器
通過設(shè)置 vo=gpu
以及 hwdec=vaapi
,具有硬件解碼功能的mpv 在播放期間 CPU 的占用率保持在 5%。相較于默認(rèn)的 PulseAudio,mpv 中的 audio-channels=2
似乎可以使我的立體揚(yáng)聲器/耳機(jī)獲得更清晰的降級(jí)混頻。一個(gè)很棒的小功能是用 Shift-Q
退出,而不是只用 Q
來(lái)保存回放位置。當(dāng)你與母語(yǔ)是其他語(yǔ)言的人一起看視頻時(shí),你可以使用 --secondary-sid=
同時(shí)顯示兩種字幕,主字幕位于底部,次字幕位于屏幕頂部。
我的無(wú)線鼠標(biāo)可以簡(jiǎn)單地通過一個(gè)小的配置文件( ~/.config/mpv/input.conf
)實(shí)現(xiàn)遠(yuǎn)程控制 mpv :
- MOUSE_BTN5 run "mixer" "pcm" "-2"
- MOUSE_BTN6 run "mixer" "pcm" "+2"
- MOUSE_BTN1 cycle sub-visibility
- MOUSE_BTN7 add chapter -1
- MOUSE_BTN8 add chapter 1
youtube-dl 非常適合觀看在線托管的視頻,使用 -f bestvideo+bestaudio/best --all-subs --embed-subs
命令可獲得最高質(zhì)量的視頻。
作為音樂播放器,MOC 不再活躍開發(fā),但它仍是一個(gè)簡(jiǎn)易的播放器,可以播放各種可能的格式,包括最不常用的 Chiptune 格式。在 AUR 中有一個(gè)補(bǔ)丁 增加了 PulseAudio 支持。即使在 CPU 時(shí)鐘頻率降到 800 MHz, MOC 也只使用了單核 CPU 的 1-2% 。
moc
我的音樂收藏夾保存在我的家庭服務(wù)器上,因此我可以從任何地方訪問它。它使用 SSHFS 掛載并自動(dòng)安裝在 /etc/fstab/
目錄下:
- root@server:/media/media /mnt/media fuse.sshfs noauto,x-systemd.automount,idmap=user,IdentityFile=/root/.ssh/id_rsa,allow_other,reconnect 0 0
跨平臺(tái)構(gòu)建
除了 Linux 本身,它對(duì)于構(gòu)建任何主流操作系統(tǒng)的軟件包都很優(yōu)秀! 一開始,我使用QEMU 與舊版 Debian、 Windows 以及 Mac OS X VM 一起構(gòu)建這些平臺(tái)。
現(xiàn)在我在舊版 Debian 發(fā)行版上轉(zhuǎn)而使用 chroot (以獲得最大的 Linux 兼容性),在 Windows 上使用MinGW 進(jìn)行交叉編譯,在 Mac OS X 上則使用 OSXCross 。
用于 構(gòu)建 DDNet 的腳本以及 更新庫(kù)構(gòu)建的說(shuō)明 的腳本都基于這個(gè)。
備份
通常,我們都會(huì)忘記備份。即使這是最后一節(jié),它也不應(yīng)該成為事后諸葛。
十年前我寫了 rrb (反向 rsync 備份)重新封裝了 rsync
,因此我只需要將備份服務(wù)器的 root SSH 權(quán)限授予正在備份的計(jì)算機(jī)。令人驚訝地是,盡管我一直在使用 rrb ,但它在過去十年里沒有任何改變。
備份文件直接存儲(chǔ)在文件系統(tǒng)中。使用硬鏈接實(shí)現(xiàn)增量備份( --link-dest
)。一個(gè)簡(jiǎn)單的 配置 定義了備份保存時(shí)間,默認(rèn)為:
- KEEP_RULES=( \
- 7 7 \ # One backup a day for the last 7 days
- 31 8 \ # 8 more backups for the last month
- 365 11 \ # 11 more backups for the last year
- 1825 4 \ # 4 more backups for the last 5 years
- )
因?yàn)槲业囊恍┯?jì)算機(jī)沒有靜態(tài) IP / DNS 但仍想使用 rrb 備份,那我會(huì)使用反向安全隧道(作為 systemd 服務(wù)):
- [Unit]
- Description=Reverse SSH Tunnel
- After=network.target
- [Service]
- ExecStart=/usr/bin/ssh -N -R 27276:localhost:22 -o "ExitOnForwardFailure yes" server
- KillMode=process
- Restart=always
- [Install]
- WantedBy=multi-user.target
現(xiàn)在,隧道運(yùn)行備份時(shí),服務(wù)器可以通過 ssh -p 27276 localhost
命令或者使用 .ssh/config
到達(dá)服務(wù)器端。
- Host cr-remote
- HostName localhost
- Port 27276
在談及 SSH 技巧時(shí),有時(shí)由于某些中斷的路由會(huì)很難訪問到服務(wù)器。在那種情況下你可以借道其他服務(wù)器的 SSH 連接,以獲得更好的路由。在這種情況下,你可能通過美國(guó)連接訪問到我的中國(guó)服務(wù)器,而來(lái)自德國(guó)的不可靠連接可能需要幾個(gè)周:
- Host chn.ddnet.tw
- ProxyCommand ssh -q usa.ddnet.tw nc -q0 chn.ddnet.tw 22
- Port 22
結(jié)語(yǔ)
感謝閱讀我工具的收藏。這其中我也許遺漏了許多日常中自然成習(xí)慣的步驟。讓我們來(lái)看看我的軟件設(shè)置在下一年里能多穩(wěn)定吧。