這是我在Linux系統下寫的第一篇博客,花了一周的時間從Windows系統轉到Linux並且可以完成日常操作,能在Linux系統下完成開發,運用各種開發工具,寫各種語言小程式和JavaEE。 經過這一周後,我的感覺就是,Linux太好玩了!!! 感受一下我的桌面: Linux和Windows最大的區 ...
這是我在Linux系統下寫的第一篇博客,花了一周的時間從Windows系統轉到Linux並且可以完成日常操作,能在Linux系統下完成開發,運用各種開發工具,寫各種語言小程式和JavaEE。
經過這一周後,我的感覺就是,Linux太好玩了!!!
感受一下我的桌面:
Linux和Windows最大的區別在於,你可以自己定製屬於自己的個人電腦,這是我最大的感悟——比如,我不需要微軟的各種服務進程,我需要的只是我要用我需要的服務進程。我在Windows下開機,會有226個進程,記憶體占用率達到40%;而當我在Linux下開機(現在附開Firefox瀏覽器、音樂播放器和wine QQ):
感受一下,這是我的電腦配置:
Linux下的Java IDE我安裝了MyEclipse、IntelliJ IDEA,然後我發現Linux系統下的MyEclipse實在是太爛了,寫個代碼都一卡一卡的,翻頁看代碼就像翻PPT一樣,實在不能忍,然後就卸載了,專心用IntelliJ IDEA寫Java代碼。Linux下的git比在Windows下使用好多了,不存在git bash,在哪打開終端都是git bash,而且tab還有提示,maven也有提示,非常舒服。
Linux下的不同之處總結:
一、環境變數配置:
在Windows中的環境變數配置還是很友好的,在系統設置直接有環境變數配置,但是在Linux下不是這樣的:在/etc/.profile中,必須以root身份打開
環境變數配置方法如下:
其中的PATH才是真正的環境變數根配置,其他都是變數引用,好好看就能明白了。
不過這個環境變數的配置是全局的環境變數,就是不論以哪個身份登陸都可以使用該設置。
不過如果經常使用一個用戶,推薦在該用戶的HOME中配置.bash_profile,這樣比較安全,不至於環境變數配置錯誤連開機都開不了。我曾經把環境變數配置錯了,開機後登陸不上去,進不去系統,最後用命令行登陸進去後,花了一天時間對著滿屏的命令,找到了原因,是環境變數配置錯誤了。因為Linux開機後,是要檢查一次環境變數的,如果環境變數出錯,是進不去系統的。
二、劃分swap空間
swap空間是Linux特有的一個概念,Linux系統的記憶體不僅僅需要物流記憶體條的大小,也需要硬碟中劃分出一塊區域供系統使用。Swap分區在系統的物理記憶體不夠用的時候,把物理記憶體中的一部分空間釋放出來,以供當前運行的程式使用。那些被釋放的空間可能來自一些很長時間沒有什麼操作的程式,這些被釋放的空間被臨時保存到Swap分區中,等到那些程式要運行時,再從Swap分區中恢復保存的數據到記憶體中。這樣可以節省系統開銷,甚至越過系統瓶頸。但是這塊區域並不是越大越好,小了又不夠用,最好劃分的和物理記憶體一樣大。
三、許可權的控制
也許會認為,Windows下也有許可權,不過Windows的許可權控制在Linux的許可權控制面前簡直弱爆了,看一下就知道了:
清晰可見,現在的我只有許可權使用opt文件夾裡面的東西,我甚至連讀取一下裡面的文本都沒有許可權:
由此可見Linux系統是多麼的安全!
四、強大的終端命令
如果說出最大的區別,莫過於無所不能的終端命令了,強大無比,而且可通過各種編程語言做成可執行的.sh腳本,現在列出一系列常用命令(部分摘自Boblim的博客,自己又添加一些):
1、關於用戶切換
su 切換到root用戶 su - user 切換至user用戶 sudo -i 切換到root用戶 sudo xxx 暫時用sudo身份執行命令 exit 退回上一身份
2、關於系統信息
arch 顯示機器的處理器架構(1) uname -m 顯示機器的處理器架構(2) uname -r 顯示正在使用的內核版本 dmidecode -q 顯示硬體系統部件 - (SMBIOS / DMI) hdparm -i /dev/hda 羅列一個磁碟的架構特性 hdparm -tT /dev/sda 在磁碟上執行測試性讀取操作 cat /proc/cpuinfo 顯示CPU info的信息 cat /proc/interrupts 顯示中斷 cat /proc/meminfo 校驗記憶體使用 cat /proc/swaps 顯示哪些swap被使用 cat /proc/version 顯示內核的版本 cat /proc/net/dev 顯示網路適配器及統計 cat /proc/mounts 顯示已載入的文件系統 lspci -tv 羅列 PCI設備 lsusb -tv 顯示 USB 設備 date 顯示系統日期 cal 2007 顯示2007年的日曆表 date 041217002007.00 設置日期和時間 - 月日時分年.秒 clock -w 將時間修改保存到 BIOS
3、關機 (系統的關機、重啟以及登出 )
shutdown -h now 關閉系統(1) init 0 關閉系統(2) telinit 0 關閉系統(3) shutdown -h hours:minutes & 按預定時間關閉系統 shutdown -c 取消按預定時間關閉系統 shutdown -r now 重啟(1) reboot 重啟(2) logout 註銷
4、文件和目錄的操作
cd /home 進入 '/ home' 目錄' cd .. 返回上一級目錄 cd ../.. 返回上兩級目錄 cd 進入個人的主目錄 cd ~user1 進入個人的主目錄 cd - 返回上次所在的目錄 pwd 顯示工作路徑 ls 查看目錄中的文件 ls -F 查看目錄中的文件 ls -l 顯示文件和目錄的詳細資料 ls -a 顯示隱藏文件 ls *[0-9]* 顯示包含數字的文件名和目錄名 tree 顯示文件和目錄由根目錄開始的樹形結構(1) lstree 顯示文件和目錄由根目錄開始的樹形結構(2) mkdir dir1 創建一個叫做 'dir1' 的目錄' mkdir dir1 dir2 同時創建兩個目錄 mkdir -p /tmp/dir1/dir2 創建一個目錄樹 rm -f file1 刪除一個叫做 'file1' 的文件' rmdir dir1 刪除一個叫做 'dir1' 的目錄' rm -rf dir1 刪除一個叫做 'dir1' 的目錄並同時刪除其內容 rm -rf dir1 dir2 同時刪除兩個目錄及它們的內容 mv dir1 new_dir 重命名/移動 一個目錄 cp file1 file2 複製一個文件 cp dir/* . 複製一個目錄下的所有文件到當前工作目錄 cp -a /tmp/dir1 . 複製一個目錄到當前工作目錄 cp -a dir1 dir2 複製一個目錄 ln -s file1 lnk1 創建一個指向文件或目錄的軟鏈接 ln file1 lnk1 創建一個指向文件或目錄的物理鏈接 touch -t 0712250000 file1 修改一個文件或目錄的時間戳 - (YYMMDDhhmm) iconv -l 列出已知的編碼
5、文件搜索
find / -name file1 從 '/' 開始進入根文件系統搜索文件和目錄 find / -user user1 搜索屬於用戶 'user1' 的文件和目錄 find /home/user1 -name \*.bin 在目錄 '/ home/user1' 中搜索帶有'.bin' 結尾的文件 find /usr/bin -type f -atime +100 搜索在過去100天內未被使用過的執行文件 find /usr/bin -type f -mtime -10 搜索在10天內被創建或者修改過的文件 find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 結尾的文件並定義其許可權 find / -xdev -name \*.rpm 搜索以 '.rpm' 結尾的文件,忽略光碟機、捷盤等可移動設備 locate \*.ps 尋找以 '.ps' 結尾的文件 - 先運行 'updatedb' 命令 whereis halt 顯示一個二進位文件、源碼或man的位置 which halt 顯示一個二進位文件或可執行文件的完整路徑
6、磁碟空間
df -h 顯示已經掛載的分區列表 ls -lSr |more 以尺寸大小排列文件和目錄 du -sh dir1 估算目錄 'dir1' 已經使用的磁碟空間' du -sk * | sort -rn 以容量大小為依據依次顯示文件和目錄的大小
7、用戶和群組
groupadd group_name 創建一個新用戶組 groupdel group_name 刪除一個用戶組 groupmod -n new_group_name old_group_name 重命名一個用戶組 useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 創建一個屬於 "admin" 用戶組的用戶 useradd user1 創建一個新用戶 userdel -r user1 刪除一個用戶 ( '-r' 排除主目錄) usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 修改用戶屬性 passwd 修改口令 passwd user1 修改一個用戶的口令 (只允許root執行) chage -E 2005-12-31 user1 設置用戶口令的失效期限 pwck 檢查 '/etc/passwd' 的文件格式和語法修正以及存在的用戶 grpck 檢查 '/etc/passwd' 的文件格式和語法修正以及存在的群組 newgrp group_name 登陸進一個新的群組以改變新創建文件的預設群組
8、文件的許可權 - 使用 "+" 設置許可權,使用 "-" 用於取消
ls -lh 顯示許可權 ls /tmp | pr -T5 -W$COLUMNS 將終端劃分成5欄顯示 chmod ugo+rwx directory1 設置目錄的所有人(u)、群組(g)以及其他人(o)以讀(r )、寫(w)和執行(x)的許可權 chmod go-rwx directory1 刪除群組(g)與其他人(o)對目錄的讀寫執行許可權 chown user1 file1 改變一個文件的所有人屬性 chown -R user1 directory1 改變一個目錄的所有人屬性並同時改變改目錄下所有文件的屬性 chgrp group1 file1 改變文件的群組 chown user1:group1 file1 改變一個文件的所有人和群組屬性 find / -perm -u+s 羅列一個系統中所有使用了SUID控制的文件 chmod u+s /bin/file1 設置一個二進位文件的 SUID 位 - 運行該文件的用戶也被賦予和所有者同樣的許可權 chmod u-s /bin/file1 禁用一個二進位文件的 SUID位 chmod g+s /home/public 設置一個目錄的SGID 位 - 類似SUID ,不過這是針對目錄的 chmod g-s /home/public 禁用一個目錄的 SGID 位 chmod o+t /home/public 設置一個文件的 STIKY 位 - 只允許合法所有人刪除文件 chmod o-t /home/public 禁用一個目錄的 STIKY 位
9、文件的特殊屬性 - 使用 "+" 設置許可權,使用 "-" 用於取消
chattr +a file1 只允許以追加方式讀寫文件 chattr +c file1 允許這個文件能被內核自動壓縮/解壓 chattr +d file1 在進行文件系統備份時,dump程式將忽略這個文件 chattr +i file1 設置成不可變的文件,不能被刪除、修改、重命名或者鏈接 chattr +s file1 允許一個文件被安全地刪除 chattr +S file1 一旦應用程式對這個文件執行了寫操作,使系統立刻把修改的結果寫到磁碟 chattr +u file1 若文件被刪除,系統會允許你在以後恢復這個被刪除的文件 lsattr 顯示特殊的屬性
10、打包和壓縮文件
bunzip2 file1.bz2 解壓一個叫做 'file1.bz2'的文件 bzip2 file1 壓縮一個叫做 'file1' 的文件 gunzip file1.gz 解壓一個叫做 'file1.gz'的文件 gzip file1 壓縮一個叫做 'file1'的文件 gzip -9 file1 最大程度壓縮 rar a file1.rar test_file 創建一個叫做 'file1.rar' 的包 rar a file1.rar file1 file2 dir1 同時壓縮 'file1', 'file2' 以及目錄 'dir1' rar x file1.rar 解壓rar包 unrar x file1.rar 解壓rar包 tar -cvf archive.tar file1 創建一個非壓縮的 tarball tar -cvf archive.tar file1 file2 dir1 創建一個包含了 'file1', 'file2' 以及 'dir1'的檔案文件 tar -tf archive.tar 顯示一個包中的內容 tar -xvf archive.tar 釋放一個包 tar -xvf archive.tar -C /tmp 將壓縮包釋放到 /tmp目錄下 tar -cvfj archive.tar.bz2 dir1 創建一個bzip2格式的壓縮包 tar -xvfj archive.tar.bz2 解壓一個bzip2格式的壓縮包 tar -cvfz archive.tar.gz dir1 創建一個gzip格式的壓縮包 tar -xvfz archive.tar.gz 解壓一個gzip格式的壓縮包 zip file1.zip file1 創建一個zip格式的壓縮包 zip -r file1.zip file1 file2 dir1 將幾個文件和目錄同時壓縮成一個zip格式的壓縮包 unzip file1.zip 解壓一個zip格式壓縮包
11、DEB 包
dpkg -i package.deb 安裝/更新一個 deb 包 dpkg -r package_name 從系統刪除一個 deb 包 dpkg -l 顯示系統中所有已經安裝的 deb 包 dpkg -l | grep httpd 顯示所有名稱中包含 "httpd" 字樣的deb包 dpkg -s package_name 獲得已經安裝在系統中一個特殊包的信息 dpkg -L package_name 顯示系統中已經安裝的一個deb包所提供的文件列表 dpkg --contents package.deb 顯示尚未安裝的一個包所提供的文件列表 dpkg -S /bin/ping 確認所給的文件由哪個deb包提供
12、APT 軟體工具
apt-get install package_name 安裝/更新一個 deb 包 apt-cdrom install package_name 從光碟安裝/更新一個 deb 包 apt-get update 升級列表中的軟體包 apt-get upgrade 升級所有已安裝的軟體 apt-get remove package_name 從系統刪除一個deb包 apt-get check 確認依賴的軟體倉庫正確 apt-get clean 從下載的軟體包中清理緩存 apt-cache search searched-package 返回包含所要搜索字元串的軟體包名稱
add-apt-repository ppa:<ppa_name> 添加 ppa 到當前的庫中並且自動導入公鑰
歡迎評論和轉載。