3月4日——培訓第71天

/bin:所有用戶都可以使用的命令所在的位置(系統默認的命令)
用戶:普通用戶和管理員用戶
/sbin:只有管理員可以使用的命令(比如關機和磁盤格式化)
/boot:內核所在位置
/dev:設置文件所在目錄 比如/dev/sda或者 /dev/hda
/etc:配置文件所在的目錄
/home:用戶的主目錄(包括用戶的配置文件信息、也就是用戶在登錄的時候最先進入的目錄)
/initrd:虛擬設備
/lib:庫目錄
/lost+found:類似於回收站
/mnt:光盤或者軟盤的加載點 用mount命令加載
/opt:第三方軟件的安裝目錄
/root:root帳號的主目錄
/tmp:臨時文件目錄
/usr:用戶目錄:用戶的安裝的文件(比如jdk就裝在這裏)
/var:保存的文件大小不確定(比如日誌文件、用戶的郵箱)
---------------------------------------------------------------------
用戶管理的相關命令:
查看系統所有的用戶:cat /etc/passwd
用戶的信息保存在/etc/passwd

創建用戶:useradd username

比如useradd h1

首先在/etc/passwd寫入h1的帳號信息,用戶的主目錄/home中會生成一個h1目錄

切換用戶: su - username

比如su - h1

設置密碼:passwd username

比如 passwd h1

刪除用戶:userdel username(這條命令是不會刪除home中的該用戶的主目錄的)
  userdel -r username(刪除用戶和用戶的主目錄)

顯示當前用戶:whoami
id username 顯示用戶具體信息

exit:如果是管理員的話就退出終端,如果是普通用戶的話,就切換到管理員

who命令可以查看已經登錄的用戶!!!

pts:僞終端

管理員可以更改所有的用戶密碼,普通用戶只能夠更改自己的密碼。
==================================================================

sort:排序命令,對輸出結果排序,不會影響原文件。
比如sort -r /etc/passwd :就是將所有系統用戶給反向排序
sort /etc/passwd:就是正向排序

uniq filename:對結果去掉連續重複的行,對源文件是不影響的。

新建空文件:
touch filename
用ls -l可以顯示大小。

wc:統計文件的行數
比如wc -l /etc/passwd可以統計系統用戶中有多少個用戶

grep:對文件內容做查找操作,找的是含有特定關鍵字的所有行

grep root /etc/passwd
查找系統帳戶中含有“root”關鍵字的信息

find /etc -name "*.conf"
在etc目錄中查找所有擴展名是conf的文件

ls -l :顯示當前目錄中的文件以及文件的所有者
chown username:groupname filename
chown root:t1 f1 這就是將f1文件歸爲root用戶了,注意t1是組名
chgrp groupname filename :改變所屬的組

打開telnet服務,監聽的端口是23
1、cd /etc/xinetd.d
2  vi krb5-telnet
把disable=yes 改爲no

3  重新啓動xinetd服務
service xinetd restart

chkconfig --list查看所有的服務

tar命令:打包、歸檔命令、把多個文件歸檔爲一個文件,作爲備份

tar -cvf 1.tar host.conf ld.so.conf
這就是說將host.conf和ld.so.conf歸檔爲1.tar就可以了。

tar -xvf 1.tar 就可以將檔中的兩個文件弄出來了!

tar -cvf filename.tar filelist (*.conf)歸檔命令。
tar -xvf filename.tar:展開歸檔文件

c:create
x:extract
v:verbose
f:file

tar 命令本身不做任何壓縮操作,如果要壓縮的話還是需要使用壓縮的工具。
壓縮工具:gzip bzip2

ls -lh顯示當前目錄中所有文件詳細信息。
這裏特別注意如果ls -l的命令顯示文件的信息的時候,大小的單位只能是字節!!
用ls -lh顯示的時候就有kb、mb等單位了,看着舒服。

gzip filename 壓縮後的文件是原來的文件名加上gz擴展名。
bzip2 filename 壓縮後的文件filename.bz2
以上兩種壓縮方式後者壓縮比例更高一些。

如果要是想壓縮多個文件的話就是先打包(tar包)然後在壓縮tar包。

解壓:gzip -d filename.gz
  bzip2 -d filename.bz2

man command是幫助,也就是說如果你想知道某個command的使用方式,那麼你可以
使用man命令。

tar czvf filename.tar.gz filelist

比如tar czvf yuan.tar.gz *.conf
這就是將所有的conf文件打包的同時壓縮!

tar -xzvf filename.tar.gz命令就是對應的解壓tar包了
網上提供下載的幾乎都是tar.gz,幾乎都用上面的命令解壓!
==========================================================================
安裝mysql

從光盤安裝自帶的客戶端工具:
在圖形化linux界面裏面的終端輸入redhat-config-packages(這一步其實是爲了得到etc中的
my.cnf配置文件!!!!)

然後添加mysql的客戶端

然後下載mysql.tar.gz
tar -xzvf mysql.tar.gz
解壓縮後,
1、useradd mysql新建一個mysql帳戶,不用設置密碼
2、scripts/mysql_install_db --user=mysql (用剛纔建的帳戶)
(執行完後/var/lib下應該有個mysql纔對)也就是安裝數據庫

3、chown -R root mysql-max-5.0.11-beta-linux-i686  將當前目錄所有者改爲root。
4、chown -R mysql data  (將數據data目錄的所有者設爲mysql)
5、chgrp -R mysql mysql-max-5.0.11-beta-linux-i686  改變所屬的組

注意:第3、4、5步不是必須的。
6、mkdir /var/run/mysqld(創建進程文件的文件夾)
7、chown -R mysql:mysql /var/run/mysqld
8、chown -R mysql:mysql /var/lib/mysql (注意lib中的mysql是數據文件)

mysql:mysql的意思是,冒號前面的是所有者,冒號後面的是所屬的組!
最後在mysql的bin目錄下
用bin/safe_mysqld --user=mysql命令啓動mysql服務

然後輸入mysql命令就可以進入mysql了

killall -9 mysqld :停止mysql進程!

=====================================================================
進程管理和權限管理的問題:

進程管理是通過ps來實現的……

ps -ef 顯示當前進程的情況
kill -9 pid
ps -ef | grep mysql 可以列出和mysql有關的進程

kill -9 進程號就可以一個一個的終止進程。

xclock :顯示當前時間

showdatabases;
create database db1 ;
use db1 ;
show tables ;
create table t
(
 id int not null primary key auto_increment
 name varchar(30) not null
)

insert into t (name) values ('Jack');
insert into t (name) values ('Jane');

讓mysql支持遠程連接……
use mysql ;
desc user;
select user,host,password from user ;

update user set host='%' where user='root' and host='localhost.localdomain';
update user set password=password("123") where host='%';

flush privileges ;

在bin目錄中執行:
mysql -A -h 162.105.81.225 -u root -p


import java.sql.* ;
public class H
{
 public static void main(String[] args) throws Exception
 {
  Class.forName("com.mysql.jdbc.Driver");
  Connection conn = DriverManager.getConnection("jdbc:mysql://162.105.81.225:3306/db1","root","123") ;
  Statement stmt = conn.createStatement() ;
  ResultSet rs = stmt.executeQuery("select id,name from t");
  ResultSetMetaData rsmd = rs.getMetaData() ;
  System.out.print(rsmd.getColumnCount()+"/t");
  while(rs.next())
  {
   for(int i = 1 ; i <= rsmd.getColumnCount(); i++)
   {
    System.out.println(rs.getObject(i) + "/t");
   }
   System.out.println();
  }
  conn.close() ;
 }
};

javac -d . H.java
java com.test.H

==========================================================================
shell本身是一個用C語言寫的程序
本身它是一種命令語言,又是一種程序設計語言。

shell是命令解釋器,由shell解釋執行。
linux的shell是bash
除此之外,還有c和ksh的shell

echo $SHELL
可以看到當前命令解釋器的信息。

每一個進程都有三個特殊的文件描述指針:
標準輸入是0,標準輸出是1,標準錯誤輸出是2

> 是輸出重定向:(以覆蓋的形式)
>>是以追加的形式(非覆蓋,而是在後面繼續輸出)
ls > 1.txt
這就是將ls命令的結果放到了1.txt中去顯示了

$var來取變量的值。
比如 echo $PATH
 echo $CLASSPATH

shell定義有環境變量
HOME、PATH

vi h1
a=100
echo $a

. h1 是運行這個h1文件。
===================================================
位置參數:

vi編輯h2:

b=1000
echo $b
echo $1

然後 .h2 2000
會輸出1000
  2000

$1代表第一個位置參數!

如果是$2的話,那麼一定會顯示出1000和第二個提供給程序的位置參數。

$#代表位置參數的個數、$*代表所有位置參數的內容

流程控制:條件、分支、循環
shell用於指定條件值的不是布爾表達式而是命令和字符串。
-eq:
-ne
-gt
-ge
-lt
-le

如果存在/test01/h1,就輸出ok
if test -e /test01/h1 ; then
echo "ok"
fi

if [ -e /test01/h1 ] ; then
echo "ok"
fi

上面兩種寫法是等價的!
-e說明存在即可,文件或是文件夾都無所謂
-f只是針對文件!!
-----------------------------------------------------
循環:
for i in 1 2 3
do
echo $i
done

//做數值運算的時候用兩個括號,判斷文件是否存在的話用中括號
i=1
while(( i<=10 ))
do
echo $i
let i+=1
done

乘法口訣表:
a控制行、b控制列。

echo -n "abc" -n就是允許不換行輸出abc

echo -n -e "abc/t"  -e其實就是允許有轉義字符

程序:
a=1
b=1
while (( a <= 9 ))
do
while (( b <= a ))
do
let c=a*b
echo -n -e "$b*$a=$c/t"
let b+=1
done
echo ""
let b=1
let a+=1
done


在shell編程裏面其實雙引號沒有太大的意義,寫不寫兩可
比如:
a=10000
echo $a
echo "$a"
是沒有區別的

但是 echo '$b'
是原樣輸出$b這個字符!!

vi /etc/bashrc
在bashrc中的最後加上:
alias net1="netconfig"
就可以讓net1和netconfig有相同的命令效果了。

=======================================================
case條件選擇:

case $1 in
"123")
echo "1"
;;
"456")
echo "2"
;;
"abc")
echo "3"
;;
"789")
echo "4"
;;
*)
echo "sssssssssssssss"
esac

這樣一來,如果輸入 . 文件名 789
那麼由於第一個位置參數是789,則打印4

===================================================

接收鍵盤輸入:
echo -n "Please input your name: "
read userName
echo "Your name: $userName" 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章