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" 

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