Ubuntu/Linux知識點(筆記)

系統方面

  • Ubuntu Desktop(Ubuntu桌面環境):sudo apt-get install ubuntu-desktop
  • Ubuntu圖形化apt包管理工具synaptic:sudo apt-get install synaptic
  • 安裝gdebi以便使用.deb安裝包
  • 運行 sudo wget -r -p -np -k http://www.test.com,會生成目錄 www.test.com,並把整站內容下載到這個目錄下。

Hash Sum mismatch問題

在update的時候,總會有那麼幾個失敗的,其中Hash Sum mismatch錯誤很常見,它的原因是由於你所使用的網絡的供應商設置了透明緩存導致你獲取的源並不是最新的,導致更新失敗,對於最近更新的包緩存不及時就會出現這樣的問題,而且自己添加的源更容易出現這個問題,目前的解決方法要麼是你用移動網絡更新(流量啊),要麼是自己設置代理。

怎樣開啓 apt-get debug

apt-get update -o Debug::Acquire::http=true

關於Coding

  • Sublime編輯器默認不支持中文輸入法
  • 默認文本編輯器gedit(GNOME桌面下)支持很多插件,方便Coding

MySQL問題

  • Linux下使用的MySQL驅動不同於Windows(原來的叫libmysql,用於Linux;後來的叫mysqlnd,因爲認證問題重做的,用於win),使得mysqli_fetch_all()函數無法使用,要麼重裝MySQLi模塊,使用mysqlnd驅動,要麼自己寫遍歷。
  • 在傳輸string的時候會因爲特殊字符出現問題,常用的函數有htmlspecailchar(),專門用於sql語句的函數mysqli_real_escape_string(),在輸出的時候爲了保持格式不變化,可以使用<pre>標籤:echo "<pre>".htmlspecialchars($string)."</pre>";
  • 使用define定義常量時會報notice錯誤,要加抑制符@define(db_host,“localhost”);

不要只用apt-get clean清理包

apt-get clean會刪除所有的緩存包,但是有的時候還是想清理更多,就壓用到apt-get autoremove:清理之前安裝 包時所需要的,但是現在不需要的依賴包。

Hash Sum mismatch問題

在update的時候,總會有那麼幾個失敗的,其中Hash Sum mismatch錯誤很常見,它的原因是由於你所使用的網絡的供應商設置了透明緩存導致你獲取的源並不是最新的,導致更新失敗,對於最近更新的包緩存不及時就會出現這樣的問題,而且自己添加的源更容易出現這個問題,目前的解決方法要麼是你用移動網絡更新(流量啊),要麼是自己設置代理。

Terminal小技巧

利用Terminal循環輸出字符串:

$ for i in `seq 121 150`; do echo "(SELECT controller_id,visit_time FROM visit_log WHERE controller_id = $i ORDER BY visit_time DESC LIMIT 1)"; echo "UNION"; done
輸出:
(SELECT controller_id,visit_time FROM visit_log WHERE controller_id = 121 ORDER BY visit_time DESC LIMIT 1)
UNION
(SELECT controller_id,visit_time FROM visit_log WHERE controller_id = 122 ORDER BY visit_time DESC LIMIT 1)
UNION
(SELECT controller_id,visit_time FROM visit_log WHERE controller_id = 123 ORDER BY visit_time DESC LIMIT 1)
UNION
(SELECT controller_id,visit_time FROM visit_log WHERE controller_id = 124 ORDER BY visit_time DESC LIMIT 1)
UNION
(SELECT controller_id,visit_time FROM visit_log WHERE controller_id = 125 ORDER BY visit_time DESC LIMIT 1)
UNION
(SELECT controller_id,visit_time FROM visit_log WHERE controller_id = 126 ORDER BY visit_time DESC LIMIT 1)
UNION
(SELECT controller_id,visit_time FROM visit_log WHERE controller_id = 127 ORDER BY visit_time DESC LIMIT 1)
UNION
(SELECT controller_id,visit_time FROM visit_log WHERE controller_id = 128 ORDER BY visit_time DESC LIMIT 1)
UNION......

如何配置Git/SSh公鑰

  • 首先sudo apt-get update/upgrade一下更新軟件,然後sudo apt-get install git安裝Git
  • 接下來找到SSH目錄,SSH是默認安裝好的,cd ~./.ssh有可能有人看不懂,~是home目錄,下面有很多隱藏文件,cd到其中的.ssh目錄下,默認只一個known_hosts用來存放已知的主機,我們需要生成SSH key;
  • 使用ssh-keygen來生成密鑰,中間會有幾次詢:1.輸入存放位置(默認/root/.ssh/id_rsa)2.輸入passphrase,這個是每次SSH請求都會加一個密碼驗證,3.再次輸入。(該命令可以添加參數-C "xxxxxxxx",添加備註)
  • 完成之後目錄下會生id_rsaid_rsa.pub,其中帶.pub後綴的爲公鑰,是我們要用的,複製到github上即可正常的訪問項目了
  • 直接在阿里雲給的終連接可能會有諸多的不便,所以還是要使用終端遠程連接的,Windows下用Xshell即可,Linux下直接用命令行ssh root@IP即可,這時之前提到的known_hosts起作用了,如果你沒有把要連接的ip放進去,就會有詢問,確定之後會自動加到裏面。
  • 這時可以連接好了之後可以遠程管理服務器了,設置一些個性化設置也不會影響服務器本身,使用完直接打exit即可退出。

/var/log問題

問題描述: auth.log每隔幾分鐘就會有內容進來:

Oct 22 09:09:01 Tianyi CRON[12577]: pam_unix(cron:session): session opened for user root by (uid=0)
Oct 22 09:09:01 Tianyi CRON[12577]: pam_unix(cron:session): session closed for user root

這是因爲有cron定時程序執行導致的,爲了不讓它出現在日誌裏,採取以下辦法:

這可能是cron調用sendmail的測試連通性任務,或者查收郵件?總之和sendmail有關。
關掉方法:
sudo vi /etc/pam.d/common-session-noninteractive
文件結尾附件找到
session required        pam_unix.so
在其前面加上:
session     [success=1 default=ignore] pam_succeed_if.so service in cron quiet use_uid
保存。
重啓cron任務:
sudo service cron restart
這下auth.log清淨了不少。。。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章