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