linux聽課筆記(入門篇)

火星人 @ 2014-03-09 , reply:0


linux聽課筆記(入門篇)

註:本文屬本人原創,轉載請註明出處.linux伺服器配置篇正在學習中......會慢慢推出.


第一天
--------------------------------------------
shutdown -h now 立刻關機
shutdown -r now 現在重新啟動計算機
reboot 現在重新啟動計算機
su - 切換成系統管理員身份
logout 註銷用戶

vi編輯器
示例:使用vi開發一個簡單的java程序Hello.java,
並在linux下運行成功.
開發步驟:
1、輸入 vi Hello.java
2、輸入 i 進入到插入模式,輸入以下代碼:
public class Hello{
public static void main(String []args){
System.out.printIn("hello,word");
}
}
3、輸入Esc鍵 進入到命令模式
4、輸入 :wq 保存並退出
:q! 不保存並退出

ls 顯示目錄和文件
ls -l 顯示文件的詳細列表

5、輸入javac Hello.java 編譯Hello.java
6、輸入java Hello 運行它


開發一個C程序:
vi Hello.cpp

include <stdio.h>
int main(){
printf("hello!");
return 0;
}

gcc Hello.ccp 編譯Hello.cpp
ls 發現生成了一個a.out,如果下次編譯另一個C程序的話,
它還是會生成a.out,這樣就覆蓋了之前的.解決:
在編譯時加參數-o後面跟文件名:
gcc -o my1 Hello.cpp

./a.out 運行a.out


目錄結構
root 存放root用戶相關文件
home 存放普通用戶的相關文件
bin 存放常用命令的目錄
sbin 要具有一定許可權才可以使用的命令
mnt 默認掛載光碟機和軟碟機目錄
boot 存放引導相關的文件
etc 存放配置相關文件
var 存放經常變化的文件
usr 安裝軟體等的默認文件夾

顯示當前在哪個路徑下: pwd

用戶管理
添加用戶xiaoming:
useradd xiaoming

設置密碼:
passwd xiaoming 注意:要指明是對哪個用戶修改密碼(本例為xiaoming)
根據提示輸入密碼

刪除用戶:
userdel xiaoming 刪除用戶xiaoming
userdel -r xiaoming 刪除用戶以及用戶主目錄


指定運行級別
命令:init [0123456]
運行級別:0:關機
1:單用戶
2:多用戶狀態沒有網路服務
3:多用戶狀態有網路服務
4:系統未使用,保留給用戶
5:圖形界面
6:系統重啟
常用運行級別是3和5.要修改默認的運行級別可改文件
/etc/inittab 的id:5:initdefault:這一行中的數字

解決錯誤配置的方法:
在出現GRUB引導界面時,按e,選擇第二行(高亮的),輸入e,再輸入1 (1代表單用戶級別)
最后在按b.這樣系統就進入到了單用戶級別.然後修復錯誤.

常用命令
pwd 顯示當前工作目錄
cd 改變目錄
ls 列出文件和目錄
ls -a 顯示隱藏文件
ls -l 顯示長列表格式
mkdir 建立目錄
rmdir 刪除空目錄
touch 建立空文件
cp 複製
cp a.out /home/xiaoming/ 將當前目錄下的a.out複製到/home/xiaoming/下
cp -r dir1 dir2 遞歸複製命令(複製子目錄信息)
mv 移動文件和改文件名
rm 刪除文件和目錄
rm a.out 刪除a.out
rm -rf * 刪除所有內容(包括目錄和文件) r遞歸 f強制
ln 建立符號連接 ----(相當於快捷方式)
ln -s 源 目標
ln -s /etc/inittab inittab inittab指向實際文件/etc/inittab
more 顯示文件內容,帶分頁
more install.log 分頁顯示install.log 按空格翻頁
less 顯示文件內容帶分頁
grep 在文本中查詢內容
grep "shunping" aaa.java 查找aaa.java中有沒有shunping.還可以加參數-n 顯示行號
| 管道命令(理解管道:把上一個命令的結果交給|的後面的命令處理)
ls -l /etc/ | more 分頁顯示/etc/目錄下的內容
find 搜索文件及目錄
find / -name aaa.java 從根目錄開始按文件名查找aaa.java文件
find /root/ -name aaa.java 從root目錄下按文件名查找aaa.java文件
find /home -size 10K 查找/home目錄下大小為10K的文件
重定向命令:
ls -l > a.txt 將列表的內容寫入文件a.txt中(覆蓋寫)
ls -al >> aa.txt 將列表的內容追加到文件aa.txt的末尾
grep "shunping" aaa.java > kkk.bak 將查找到的內容寫入文件kkk.bak中

文件許可權、用戶組
文件的所有者:一般為文件的創建者
文件的所在組:當某個用戶創建了一個文件后,這個文件的所在組就是該用戶所在的組
文件的其他組:除開了文件的所有者和所在組的用戶外,系統的其他用戶都是文件的其他組

groupadd policeman 添加組policeman
cat /etc/group | more 查看所有組的信息
groupadd tufei 添加組tufei

創建用戶並同時指定將該用戶分配到哪個組:
useradd -g 組名 用戶名
useradd -g policeman along
useradd -g policeman panpan
useradd -g tufei ashuai

查看所有用戶信息:
cat /etc/passwd

passwd along
passwd panpan
passwd ashuai 分別設置密碼

用along用戶登陸,並創建文件mytest1.java (略)
ls -l
顯示:
-rw-r--r-- 1 along policeman 11 Dec 9 09:32 mytest1.java
//說明:along前面的1代表後面mytest1.java是文件,如果後面是文件夾,它
在這裡將顯示這個文件夾中文件的個數.
-rw-r--r-- 表示是各類用戶對這個文件的操作許可權,下面講解:
它可以分為四部分:- rw- r-- r--
第一部分 - 代表文件類型,- 代表普通文件 l代錶鏈接文件
第二部分 rw- 代表文件的所有者對該文件的許可權
許可權分為三種:
r 可讀 也可用4表示
w 可寫 也可用2表示
x 可執行 也可用1表示
本例表示文件的所有者along對這個文件具有可讀可寫的許可權
第三部分 r-- 代表文件所在組的用戶對該文件的許可權
本例中比如panpan對這個文件只有讀許可權
第四部分 r-- 代表其他組的用戶對該文件的許可權

這時如果用panpan登陸,panpan是進不了along文件夾的.
cd ..
ls -l
drwx------ 3 along policeman 4096 Dec 9 09:42 along
//說明:d代表是文件夾.along具有可讀可寫可執行的許可權,其他用戶不具有
任何許可權.panpan是進不了along文件夾
修改文件的訪問許可權:(登陸為along用戶修改即可)
chmod 770 along (第一個7代表對所有者訪問許可權進行修改 4 2 1=7,第二個7代表對文件所在
組訪問許可權進行修改)
ls -l
drwxrwx--- 3 along policeman 4096 Dec 9 09:42 along

(用root的許可權)改變某個用戶所在的組:
usermod -g 組名 用戶名
usermod -g policeman ashuai 將ashuai由tufei組變為policeman組

修改文件所有者:
chown 用戶名 文件名

修改文件所在的組:
chgrp 組名 文件名

第二天
----------------------------------------------------------------
linux下搭建javaee開發環境
jdk的安裝:
1、將安裝的ISO(本例中為mypackage.iso)掛載到linux操作系統上

mount /mnt/cdrom/ 掛載光碟機
cd /mnt/cdrom/
ls 這樣可以查看光碟機上的內容
cd /
umount /mnt/cdrom/ 卸載光碟機

2、安裝時建議把要安裝的程序拷貝到/home目錄下
cp j2sdk-1_4_2_07-linux-i586.bin /home (這個文件名很長,可用TAB鍵補全,不用一個個輸入)
cd /home/
ls 可以看到已經拷貝成功.

3、cd /home

4、安裝
./j2sdk-1_4_2_07-linux-i586.bin
輸入yes后開始安裝

安裝好后,ls,可以看到多了個j2sdk1.4.2_07的目錄
cd j2sdk1.4.2_07
ls 可以看到有個bin目錄
cd /bin
ls

5、/etc/profile (環境配置文件)
vi /etc/profile
用#來註釋掉原來的java的配置文件
#JAVA_HOME=...........(省略)
#PATH=...........(省略)
#CLASSPATH=...........(省略)
#CATALINA_HOME=...........(省略)
#export JAVA_HOME PATH CLASSPATH CATALINA_HOME

然後重新登陸一下,就發現原來的java沒有用了

6、配置剛才自己安裝的jdk
vi /etc/profile

#JAVA_HOME=...........(省略)
#PATH=...........(省略)
#CLASSPATH=...........(省略)
#CATALINA_HOME=...........(省略)
#export JAVA_HOME PATH CLASSPATH CATALINA_HOME
JAVA_HOME=/home/J2sdk1.4.2_07
PATH=$PATH:/home/J2sdk1.4.2_07/bin
CLASSPATH=. :/home/J2sdk1.4.2_07/jre/rt.jar
export JAVA_HOME PATH CLASSPATH
保存,然後重新登陸一下,生效.

安裝集成開發環境Eclipse(略)

tar -zxvf xxxxxx.tar.gz 安裝以.tar.gz結尾的文件
./eclipse 運行eclipse

安裝myEclipse(略)


java ee的伺服器用的較多是的tomcat
安裝tomcat
tar -zxvf xxxxxx.tar.gz

& 代表要以後台方式運行


realplay的安裝
1、把安裝文件拷貝到/home
2、安裝:
./RealPlayer10GOLD.bin

3、運行realplay
cd RealPlayer
./realplay

Linux分區
一塊硬碟上主分區 擴展分區不能超過4個
查看linux系統分區具體情況:
fdisk -l
hdx~ 其中hd代表IDE硬碟,X為盤號(a為第一塊,b為第二塊,c為第三塊等),
~代表分區,主分區或擴展分區用1-4表示,從5開始是邏輯分區
hda3表示第一塊IDE硬碟上的第三個主分區或擴展分區
sd代表SCSI硬碟
sda1代表第一塊SCSI硬碟的第一個分區

查看某個目錄是在哪個分區:
df [目錄全路徑]
df /boot/
可以看到sda1分區是掛載到/boot目錄下的
可以卸載:
cd /
umount /boot/
我們可以將sda1分區掛載到/test目錄下
mount /dev/sda1 /test/

掛載命令格式:
mount [-參數] [設備名稱] [掛載點]

查看磁碟使用情況
df [-參數]
df -h -h:以可讀性較高的方式顯示文件系統當前的使用情形

linux安裝
linux手動分區:
/boot分區,100M
swap交換分區,一般是物理內存的2倍,但不要大於256
/ 根分區,儘可能的大


第三天
----------------------------------------------------------------
linux下的shell
常用的shell:
/bin/sh即/bin/bash
/bin/csh
/bin/ksh

ls -l /bin/*sh 可查到系統中的shell
env 查看目前使用的是哪種shell,該命令可以顯示當前操作系統的環境變數
修改shell:
chsh -s 新的shell
chsh -s /bin/csh

history 查詢歷史記錄命令
history 10 查詢最近使用的10個命令

linux下查看IP情況的命令:
ifconfig

linux網路環境配置
第一種方法:
(以root用戶登陸)
setup→Network configuration
配置好后,這時網卡的配置沒有生效的,要運行
/etc/rc.d/init.d/network restart 命令才生效

第二種方法:
ifconfig eth0 x.x.x.x 設置IP
ifconfig eth0 network x.x.x.x 設置子網掩碼
註:這樣配置網路將立即臨時生效.當重啟或關機后,將還原設置前的配置.

第三種方法:
修改/etc/sysconfig/network-scripts/ifcfg-eth0 這個文件里的各個屬性
配置好后,這時網卡的配置沒有生效的,要運行
/etc/rc.d/init.d/network restart 命令才生效

在linux中,所有的設備都是文件

RPM包的管理
RPM包的名稱格式:
apache-1.3.23-11.i386.rpm
apache 是軟體名稱
1.3.23-11是軟體的版本號,主版本號,和次版本
i386是軟體所運行的硬體平台
rpm是文件擴展名,代表RPM包

查詢安裝了哪些rpm軟體
rpm -qa
查詢軟體包是否安裝
rpm -q 軟體包名
rpm -q mysql 查詢mysql是否安裝

安裝RPM包:
rpm -i RPM包全路徑名稱
rpm -ivh RPM包全路徑名稱 (有提示信息)
參數說明:
i=install 安裝
v=verbose 提示
h=hash 進度條

卸載RPM軟體包:
rpm -e RPM包的名稱

升級RPM軟體包:
rpm -U RPM包全路徑名稱


samba伺服器的安裝與配置

1、看看是否已經安裝了samba
rpm -q samba
2、如果有,就卸載
rpm -e samba
但提示,有一個包要依賴這個,刪除不了,
rpm -e --nodeps samba (--nodeps可以連同依賴的包一起刪除)

3、開始安裝
rpm -ivh samba-common-2.2.7a-7.9.0.i386.rpm
rpm -ivh samba-client-2.2.7a-7.9.0.i386.rpm
rpm -ivh samba-2.2.7a-7.9.0.i386.rpm

4、創建一個用戶youyou
useradd youyou
passwd youyou

5、給youyou設置samba密碼
先將/etc/passwd中的用戶都加到smbpasswd中:
cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd
再設置密碼:
smbpasswd youyou

6、啟動samba伺服器,測試
service smb start
在windows的運行中,輸入\192.168.222.88 (這個是samba的伺服器地址)
然後傳個文件到samba中,在linux下查看
cd /youyou/
ls


第四天
--------------------------------------------------------------------
任務調度命令crontab
任務調度:是指系統在某個時間執行的特定命令或程序.
例:每天凌晨2:00去執行date >> /home/mydate2
1、設置任務
crontab -e
2、輸入:
0 2 * * * date >> /home/mydate2
說明:
第一個代表是分鐘,每小時中的第幾分鐘執行,這裡是0
第二個代表是小時,每日的第幾個小時執行,這裡是2
第三個代表是日期,每月的第幾天執行,*代表每天
第四個代表是月,每年的第幾月執行,*代表月
第五個代表是星期,每周的第幾天執行 *代表每星期
3、退出,保存
esc
:wq

怎樣去調度多個任務?
(1)在crontab -e 中直接寫 這種方法是比較傳統的.不推薦.
(2)可以把所有的任務寫入到一個可執行文件(shell編程)
例:
vi mytask.sh (一般以.sh結尾)
date >> /home/mydate3
cp /home/mydate3 /root
這個可執行文件保存成功,.但它只有rw的許可權,沒有可執行X的許可權
,要修改許可權:
chmod 744 mytask.sh
下面就可以把mytask.sh文件交給crontab去執行了:
crontab -e
* * * * * /root/mytask.sh

終止任務調度:
crontab -r
列出當前有哪些任務調度:
crontab -l


進程的概念和管理
進程:就是正在執行的程序
線程:(1)是輕量級的進程;(2)進程有獨立的地址空間,線程沒有
(3)線程不能獨立存在,它是由進程創建的.

ps 顯示系統正在執行的進程信息
ps -a 顯示當前的所有進程信息
ps -u 以用戶格式顯示進程信息
ps -x 顯示後台進程運行的參數

終止進程:
kill 進程號
kill -9 進程號 (如果不能結束進程,加參-9

動態監控進程top
top 直接輸入top,按q退出
14:06:22 up 4min (系統啟動了4分鐘),1 user(當前有1個用戶正在使用),
load average:0.02,0.12,0.07(當前系統負載情況,這三個相加除以3,如果大於0.6時,說明負載很大)
37 processes(進程數):36 sleeping 1 running ,0 zombic(這個是殭屍進程數),0 stopped
cpu states(cpu狀態):0.0% user 0.1% system 0.0% nice 0.0% iowait 99.8% idle(99.8% idle說明
有99.8%的cpu處於空閑狀態)
Mem: 255264K av,(內存總數) 39428k used(正在使用的內存) ,215836k free(空閑內存),0k shrd,5528k buff
30632k actv, 140k in_d ,292k in_c
Swap:257032K av,0k used,257032 free 19376k cached

監視特定用戶
top ,按回車然後輸入u,回車,輸入用戶名

date 顯示系統的時間
date MMDDHHMMyyyy.ss 月月日日時時分分年年年年.秒秒

cal 3 2002 查看2002年3月的月曆
cal 2008 查看2008年的年曆


監控網路狀態
netstat -an 顯示整個系統目前的網路情況
netstat -anp -P參數可以顯示進程號

traceroute 追蹤路由.檢測數據包在網路上傳輸的過程
route 查看本機路由的情況


Mysql資料庫在linux下的使用
安裝mysql
1)把安裝文件拷貝到/home
cp mysql-* /home/ (有兩個文件,這樣用通配符,兩個文件就一同拷貝過去了)

mysql-connector-java-3.1.10-bin.jar (這個是驅動文件)
mysql-standard-4.0.26-pc-linux-gnu-i686.tar.gz

2)把安裝文件解壓縮
cd /home/
tar -zxvf mysql-standard-4.0.26-pc-linux-gnu-i686.tar.gz
這時會生成一個mysql-standard-4.0.26-pc-linux-gnu-i686的文件夾,我們對它重命名:
mv mysql-standard-4.0.26-pc-linux-gnu-i686 mysql

3)繼續安裝
group add mysql (創建一個mysql組)
useradd -g mysql mysql (創建一個名叫mysql的用戶並放入到mysql組)
cd mysql (進入mysql的文件夾,這樣下面初始化資料庫命令可以運行)
scripts/mysql_install_db --user=mysql ( 初始化資料庫)
chown -R root . (修改文件的所有者, . 代表當前目錄,把當前目錄及子目錄下的文件(-R參數)的所有者改為root用戶)
chown -R mysql data (修改data文件夾的所有者為mysql)
chgrp -R mysql . (改變用戶所在組為mysql組)
bin/mysqld_safe --user=mysql & (啟動mysql,用mysql用戶來啟動它)

ctrl c退出

運行mysql:
cd bin/ 要先進入/bin目錄下,才能運行
./mysql -u root -p
輸入密碼,當前為空
show databases

quit退出

修改環境變數,在任意路徑下,輸入./mysql -u root -p 都能運行mysql:
env | more 查看環境變數
cd /root/
在root目錄下,存放有root的用戶變數:.bash_profile
vi .bash_profile
在PATH=$PATH:$HOME/bin後面添加mysql程序的路徑:
:/home/mysql/bin/
logout註銷用戶,重新登陸root,生效


mysql資料庫的使用
1)運行mysql
2)建立資料庫
creat database spdb1;
show databases; 可以看到剛才建立的資料庫spdb1
3)建表
use spdb1; 在資料庫spdb1中建表
create table users(userId varchar(8),userName varchar(8)); 建一張名為users的表
添加數據:
insert into users values('0001','shunping');
insert into users values('0002','xiaoming');
查詢:
select * form users

如果進行java開發,要注意mysql驅動的位置:
放在jdk的主目錄下/jre/lib/ext/

備份和恢復mysql資料庫
備份:./mysqldump -u root -p密碼 資料庫名>data.bak
恢復:./mysql -u root -p密碼 資料庫名<data.bak
例:
cd /home/mysql 進入到mysql的安裝目錄
cd /bin
./mysqldump -u root -p123456 spdb1 > /home/myspdb1 備份到/home/下,備份的文件名為myspdb1
註:在恢復時如果報錯:ERROR 1049:Unknown database 'spdb1'
新建成一個空的資料庫spdb1即可:
create database spdb1;

第五天
------------------------------------------------------------------------
ssh
1、windows下安裝ssh客戶端
SSHSecureShellClient-3.2.9.exe

linux默認安裝sshd服務,默認是啟動的.監聽的埠是22

2.在windows下使用ssh客戶端登錄到linux
可以上傳下載文件

補講linux重要內容
linux目錄結構
/bin 普通用戶的可執行命令,系統的任何用戶都可以執行該目錄中的命令
/boot 存放linux操作系統啟動時所需使用的文件
/dev 系統中的所有設備文件
/etc 系統中的配置文件
/home 普通用戶的宿主目錄,每個用戶在該目錄下都有一個與用戶名同名的目錄
/mnt中的子目錄用於系統中可移動設備的掛載點
/root 超級用戶root的宿主目錄
/sbin 系統的管理命令,普通用戶不能執行他們
/tmp 系統的臨時目錄
/usr 系統應用程序和相關文件
/var 系統中經常變化的文件如日誌文件和用戶郵件

從當前目錄去訪問某個文件(夾), 就是相對路徑
從根目錄(/)去訪問某個文件(夾),就是絕對路徑

cd 後面什麼都不寫,進入當前用戶的主目錄

複製文件夾的問題:
cp /workspace /home 這樣是複製不成功的,提示這是個文件夾不能複製
cp -rf /workspace /home -r複製子目錄,-f強制.這樣就成功複製了.

shell使用
配置.bashrc文件可以指定某些應用程序在用戶登陸的時候就自動啟動:
vi /root/.bashrc
在最后添加:
/home/tomcat/bin/startup.sh start 當root用戶登陸后,自動啟動tomcat
註:要進入用戶主目錄下,修改.每個用戶目錄下都有這個文件

/etc/profile 配置系統的環境變數
/home/用戶名/.bash_profile 配置用戶的環境變數

當你希望臨時加入一個路徑時,使用export
export PATH=$PATH:/root 臨時加入/root路徑 $PATH引用原來的值 :是路徑分隔符

runlevel 查看當前的運行級別

使用zip和unzip壓縮和解壓
zip aa.zip 要壓縮的文件名
zip aa.zip 要壓縮的文件名1 要壓縮的文件名2
zip -r aa.zip 要壓縮的文件夾路徑 ,-r子目錄
例:
zip bb.zip kkk.bak 把kkk.bak壓縮為bb.zip
zip -r aa2.zip ./workspace/ 壓縮當前目錄下的workspace文件夾 .代表當前目錄

unzip aa.zip 直接解壓縮aa.zip




[火星人 via ] linux聽課筆記(入門篇)已經有153次圍觀

http://www.coctec.com/docs/linux/show-post-48006.html