Linux 学习 笔记

2月23日
Linux
1 Linux
2 Hibernate
3 Spring
4 设计模式
3--4周时间学完
复习,项目
Linux:
RHCE课程体系
RedHat论证的工程师--
特点:基于实践
系统,网络,安全
60小时+1--2小时的练习--通过RHCT--RHCE--RHCA
RHCH基础
1 什么是OS(操作系统):
1.1 Application
1.2 System Calls(API)
1.3 Kernel(内核)
1.4 硬件(硬盘,内存。。。)
Application+SystemCalls+Kernel----完整的操作系统
2 什么是Linux?
Linux只负责专注Kernel--Linux只是一个内核,它不是一个完整的操作系统
3 谁来提供Linux之上的应用程序?
自由软件(通常来自于GNU项目)
4 准确的说Linux操作系统是:
GNU/Linux
例如:RedHat进入的图形系统:
gnome---(C+CTK图形库)
kde----(C++ QT图形库)
5 什么是学习Linux?
真正的读,裁剪Linux内核才是真正的学习Linux
www.kernel.org
内核的主要编写语言:C+(汇编)
GCC--gcc--GNU项目的C语言编译器a
依赖:glibc
使用grub修改系统密码:
开机进入Linux系统,按上键或下键,再打e,移到下一个,按e,进入之后打空格 1 回车,再按b键,进入之后输入passwd 回车,输入exit回车
改变系统的IP:
系统--> 管理--> 网络,进入,口令:zlvc ,选静态设置的IP地址,填写
右击选择打开终端,输入gedit
Linux体验:
1 默认情况下Linux的bootloader---GRUB可以让用户轻松进入特权模式
2 将GRUB变的安全,不能轻松进入特权模式:
1 GRUB配置文件 的存放位置:
   1.1  cd /boot/grub/
   1.2  dir || ls(是list的所写和dir同样效果)
   1.3  grub.conf     //是GRUB的配置文件
   1.4  gedit grub.conf &
简单操作:gedit /boot/grub/grub.conf &
grub关键字:
1  default=0   //代表默认高亮选择第一个title关键字
2  timeout=5   //如果用户默认5秒钟没有任何操作,那么进入default关键字指定的操作系统
3  hiddenmenu  //隐藏GRUB选择菜单,最好注释#hiddenmenu为gurb加入保护
password关键字 
1 在title的上面输入password= --md5 xxx
2 算出 md5 密码 grub-md5-crypt
grub.conf
如何学习Linux?
1 记住常用指令:ls, cd, firefox
2 对应服务的配置文件
关机:poweroff
明天:在Linux搭建Java的开发环境,娱乐环境
目标:完成大唐项目
2月24日
1  在Linux下如何共享文件?
一般使用ssh服务,端口:22 进行共享:
ssh 客户端
sshd 服务器
小细节:
命令提示行:
$代表当前用户是一个普通用户
#代表是root
大家作为一个客户端登录:
1 服务器端开一个帐号
useradd username:
useradd student   //student就添加入Linux
passwd username:
passwd student    //为student用户设置密码
2 开启sshd服务器:# /etc/init.d/sshd restart
3 使用客户端登录:
细节:ssh服务安装完后有三个客户端:
1 ssh      //远程登录
2 sftp    //模拟ftp下载
3 scp    //远程下载,无程上传
示例:
语法:  sftp username@ip
      例:sftp [email protected]
      1 yes
      2 student
      3 ls
      4 mget *(下载所有文件)
      5 exit   //退出sftp
      ls(看到刚刚下到的文件)
ifconfig   //查看自己的地址
小实验:登录进入同桌的电脑:
                1 ssh [email protected]
                2 touch 1txt 2.txt 3.txt(指令创建空文件)
                                           3  同桌检验: cd /home/student/
                                          4  同桌检测:ls
实验三:安装JDK
1  ls    //可以在当前目录看到jdk-xxx
2  chmod u+x jdk-xxx  //给jdk安装文件赋予可执行权限
3  ./jdk-xxx    //运行jdk安装文件
cd jdk1.6.0_06/bin/
实验四:搭建JDK环境:
cd /root(进入到跟目录下)
1 ls   //看到jdk的目录
2 mv  jdk1.6.0_06 /opt
3 cd /opt
4 ls    //看到jdk的目录准备工作完成
5  将JDK的路径设置到环境变量中:
pwd(打印当前的工作路径)
1 cd回车   //回到自己的宿主目录
2 gedit .bashrc &  //打开环境变量配置文件
    再文件的最后一行加入:
   export JAVA_HOME="/opt/jdk1.6.0_06"
   export PATH=$JAVA_HOME/bin:$PATH
保存,并且关闭: gedit
3 source .bashrc   //使配置文件立刻生效
4 javac    //测试,看到帮助信息,搭建完成
5 gedit HelloWorld.java
6 javac HelloWorld.java
7 java HelloWorld
实验五:eclipse的配置,搭建
1 ls   //可以看到eclipse-jee-xxx.gz
细节:后缀名为.gz||.bz2的为类UNIX操作系统的压缩包,相当于Windows的:  .rat,  .zip
2  tar zxvf eclipse-jee-xxx.gz
3  ls  //可以看到eclipse目录
4  cd eclipse
5  ./eclipse(要退出eclipse  cd /opt/)
6  上面的运行方式比较繁琐,所以配置eclipse的快速运行方式:
     1  关闭运行的eclipse
  2  mv eclipse /opt
注: /opt 目录是存放第三方二进制文件 的标准路径
  3  cd回车   //进入宿主目录
  4 gedit .bashrc   //修改配置文件
再alias关键字的最后一行加入:
alias eclipse="/opt/eclipse/eclipse"
  5 source .bashrc
  6 eclipse &    //&符号代表不占用汉前终端,将程序转入终端后台运行
实验6:  1 下载目录; 2 搭建 tomcat并和 eclipse整合
介绍scp的使用方法:
scp -r student@ip:目录存放地
示例:
scp -r [email protected]:/home/student/jar_lib /opt
cd /opt
练习:
将apache-tomcat.xxx.gz解压并且与eclipse关联,使jsp页面打印HelloWorld
firefox---/usr/bin/firefox
实验七:解压后缀名为 .bz2的压缩包:
tar jxvf xxx.bz2
1 tar jxvf LumaQQ.bz2
2 cd LumaQQ
3 ./lumaqq
pdf的阅读:
evince xx.pdf&
2月25日
cd /    //进入最顶层
df      //磁盘分区
1 Linux下的设备文件:
IDE1---硬盘数据的传输
IDE2---光盘数据的传输
----设计第个IDE接口可以接入两个硬盘,主,从:
硬盘的种类:
普通硬盘:hd
高速硬盘:sd
IDE1接口: 主:a    从:b
IDE2接口: 主:c    从:d
以当前系统的sda1进行描述:
1 sda   //代表IDE1接口的主硬盘
1---4    代表硬盘的主分区----可以存操作系统
5---n 代表硬盘的逻辑分区---可以存储数据
fdisk -l   //列出当前硬盘的分区状态
分区的类型:
1 主分区
2 扩展分区( 被包含在扩展分区)
所以:扩展分区是不能使用的,存数据时数据会存储在逻辑分区
5 永远是逻辑分区  sda5
示例:如果将分区全部使用的情况,硬盘100G
/dev/sda1   主分区 20G
/dev/sda2   主分区 20G
/dev/sda3   主分区 20G
/dev/sda4   扩展分区  40G    //不能使用
此时需要再/dev/sda4中分出逻辑分区:
/dev/sda5  逻辑分区 20G
/dev/sda6  逻辑分区 20G
示例2:如果只有一个主分区,N个逻辑分区的情况 100G
/dev/sda1  主分区 20G
/dev/sda2  扩展分区 80G
/dev/sda5  逻辑分区 40G
/dev/sda6  逻辑分区 40G
注:  /dev 就是一个普通的目录系统把它当成存储各种设备文件 的固定目录
2 Linux下各种目录的特殊用途及含义:
2.1  # cd /       注释: /符号被类UNIX操作系统 成为root(根)
2.2  # ls
/dev 存储设备文件
/opt 第三方二进制文件
/root 高级管理员存储数据---其他用户无权限访问
/bin  存放普通权限的二进制可执行文件,例如: ls, cd
/sbin 存放二进制指令,但只有超级用户才有权使用
/etc  是Linux下各种系统,网络,安全配置文件的存放点,基本是普通的文本文件(配置文件不能随便删除)
/boot 用于存储:Linux内核及引导程序(GRUB)  10M--20M
/lib  用于存储:系统的共享库文件,例如:
      ls再运行的时候,需要调用/lib下的某个库文件,相当于windows/system32
      windows:库后缀名 .dll  动态链接库
      Linux: 库后缀名 .so
/proc 存放内核运行状态的镜像文件,当关机proc是一个空的目录
常用文件:
1  cat /proc/cpuinfo      //查看到CPU
2  cat /proc/meminfo      //查看内存
3  cat /proc/version      //Linux系统版本信息
/var  存放系统日志或数据库(MySQL默认)
常用文件:
1  cat /var/log/messages    //系统运行日志
/home 普通用户存放数据的地方,例如用户名:jack,  数据存放在: /home/jack/
/tmp 系统应用程序运行时临时文件存放点
/usr 普通用户安装的程序
/usr/bin
/usr/lib
/mnt  临时文件系统的挂载点,例如:cdrom,U盘
/media //与mnt基本一样,一般是系统自动挂载
/sys   类似于proc镜像文件系统
/lost+found    //格式化文件系统后自动创建的
/selinux       //增强的linux主要是linux安全方面
RHCE基础部分总结:
1  什么是完整的OS
2 Linux到底是什么
3 L&RMS 作者 操作系统革命(电影)
4 Linux GRUB的基本配置
5 JDK+eclipse的配置
6 ssh服务器及客户端的使用
7 Linux下的文件设备概念:sdaxxx,hdaxxx的由来
8 Linux下的文件系统  / 目录下各个目录的含义
9  什么是swap(交换)分区,如何正确使用
所谓的windows下的虚拟内存,用于与实际内存数据交换
所以Linux在分区时,最少分两个区:
1  / 根分区         5--10G(空间有限)
2 swap交换分区(一般是内存的2倍)
汪: 当内存为2G时,swap也为2G
swap分区进要指定为swap格式
其他的Linux文件系统为ext3或者ext4或者reiser4或者jfs
www.kernel.org官方系统为:ext3,ext4
ext2没有日志系统
ext3有日志系统
一般自己做Linux系统如何分区?
建议使用:vmware在windows虚拟安装
/opt 可以独立分区   10--20G
/home 可以独立分区 20--40G
/(ext3,4)   分区  10G
/boot(ext2) 分区 20--50M
swap 分区(swap)
1 Linux的引导流程:
1.1  按下电源
1.2 BIOS加电自检--检测主板上的设备--固件
1.3 读取硬盘的首512字节--加载bootloader(GRUB)
1.4 GRUB根据用户的选择决定引导哪一个OS,决定性的关键字:
title MyLinux
root(hd0,0)     //为GRUB指定 /boot分区
kernel /boot/vmlinuz-xxx     //指定boot区的内核
       root=LABEL=/   注释: 告诉内核它的 / 分区
       rhgb xxx    //内核引导参数
initrd    //可有可无----一般存储一超级额外的驱动程序
1.5  运行用户态的第一个进程 /sbin/init
      注: init进程的pid为1
init进程的作用: 初始化操作系统,比如:默认运行状态,服务
1.5.1 init进程读取  /etc/inittab配置文件(重点)
cd
gedit /etc/inittab &
实验:将id:5:改为3, 保存退出,reboot(重启)
1.6 默认情况下进入图形界面
Linux系统的运行级别(0--6):
0 关机
1 单用户模式(特权模式)
2 多用户无网络模式
3 完全多用户模式
4 自定义(未使用)
5 图形多用户模式
6 重启计算机
//RedHat版本的inittab的描述
注意: 0,1,6是通用的,但其他的级别根据发行版本的不同,会有所区别
pid 0 是内核调度器
X11 是UNIX下图形界面的名称
reboot  重启: init 6
init 0   //关闭
实验:将刚才的 inittab中的3,改为5,然后init6重启计算机
在图形界面到终端切换:
ctrl+alt+F1-F6  //可以切换六个终端
ctrl+alt+F7     //回到图形界面
快速重启图形界面:运行级别为5
ctrl+alt+backspace
解读inittab配置文件:
inittab文件剖析:
在inittab中,所有条目采取以下格式:
id: run-levels: action: process
id: 条目的标识符,包含两个字母或数字
run-levels:指定运行级别,可以指定多个
action:指定运行状态
proccess:指定要运行的可执行程序的完整路径
gedit /etc/rc.d/rc.sysinit
cd /etc/rc.d/rc5.d/
ls
重点是action字段:
1 initdefault   //代表系统的默认运行基本
2 wait  //代表必須等待此程序运行完,才可运行后面
3 respawn   //当杀掉进程后,此进程可立刻重启
rc.d 服务的配置:
# ntsysv    //工具管理,基于图形
# chkconfig   //工具,基于终端
# sync
# chkconfig
# chkconfig --list
# chkconfig --level 5 autofs off(关闭)
# man chkconfig(详细帮助),q 键退出
Linux现在各个发行版的特点:
1 RedHat----rpm 机制管理
2 Debian----dpkg 机制管理
    子版本:ubuntu, www.ubuntu.org.cn
3 gentoo--portage 机制管理
4 arch--pcman 机制管理
5 LFS-- 底层的source
包管理系统分为两类:
1  基于二进制发行,特点安装快捷,但是软件不一定有优化
   代表: RPM(yum),dpkg(apt-get)
2 基于源码,特点安装慢,但是软件根据系统进行优化
  代表:portage(Gentoo) emerge
Linux学习路线图:
1 RedHat
2 ubuntu
3 LFS    //真正提高技术的过程
4 Gentoo    //基本保持你提高的水平
相关指令:
1 runlevel  //显示当前系统运行级别
2 init 3 || init 5  //可以不重启切换系统运行级别
3 hwclock    //可以修改BIOS时钟
  --systohe    //系统时间同步到BIOS中
  --hctosys    //BIOS时间同步到系统中
2月27日
文本编辑器--Vi
Vi是Visual interface的简称,它是一个功能强大的全屏幕文本编辑器,是各种Linux和UNIX上最常用的文本编辑器,它的作用是建立,编辑,显示的文本文件
Vi没有菜单,只有命令
注意:Vi命令并不锁住所编辑的文件,因此多个用户可能同时编辑一个文件,那么最后保存的文件版本将被保留
Vi的工作模式:
进入 退出
———————— ————————>
Vifilename  | | ZZ
|             |
   命   令   模   式 
//                   \\
输入i a o  // ESC            \\命令以回车键结束运行
                          //                                                 \\
              输入模式 辅助命令模式           
vim xxx.java
:w    //保存
:wq   //保存退出
vim   //查看版本
cd
vim .bashrc 在alias eclipse="/opt/eclipse/eclipse"
下加alias vi="/usr/bin/vim"保存退出
source .bashrc(生效)
附加与插入命令
命令      作用
a        在光标后附加文本
A        在文本行行末附加文本
i        在光标前插入文本
I        在本行开始插入文本
o(小o)   在光标下插入新行
O        在光标上插入新行
在命令模式下j向下,k向上,h向左,l向右,G使光标定位在最后一行,1G使光标定位在第一行,NG使光标定位在第N行
翻页:ctrl+f   //下一页   
    ctrl+b   //上一页
在插入模式中选中你要复制的部分,在按中键
文本删除命令
命令                 作用
x      删除光标所在字符
dd     删除光标所在行
Ndd    删除光标所在位置N行
替换和取消命令
r   取代光标所在字符
R   进入替换模式,替换完毕---ESC
u   取消上次操作,如果文件已经写入将无法取消
文本复制命令
yy,Y    复制当前行  
yNy复制N行
p(小P)  进行粘贴ZZ                  保存修改并退出vi
:q!                 不保存退出
:wq!                强行写入并且退出
保存和退出命令
命令                                                   作用
:w                  保存修改
:w new_filename     保存为指定文件
:wq                 保存修改并退出vi
高级编辑选项
命令                            作用
:set nu      显示行号
:set nonu    取消行号
:se ic
:set noic
vim的配置文件
1 cd 回车
2 vi .vimrc   //第一次此文件不存在
3 set nu     //保存退出
4 测试打开他文件默认就会显示行号
加set fileencodings=uft8,gb18030,big5,gb2312
查找指令与替换   /查找的数字
:set noic   //区分大小写查找
:noh        //取消查找后的高亮显示
:%s/老的/新的/g          //全局替换
vi对于多个文件的同时编辑
:sp filename 在当前vi编辑另外一个文件
ctrl+ww     进行多个分割窗口的切换
vi对于文件的加密     //:X
文件取消加密              //:X 然后不输入加密密码
Vi编辑器总结:
1 工作模式
2 插入模式:  i, o
3 定位:jkh1,G,1G,nG
4 删除:dd, x
5 替换:r, u
6  复制: yy,yNy,p
7 保存:  :wq!,q!
8 vim的配置文件: .vimrc, set nu, set ic, setencod
9 搜索替换:     /string查找
          :%s/oldstr/newstr/g  查找替换
10 多个文件的编辑:   :sp filename
11 文件的加密,解密:   :X
                                   注:x(为快速保存退出)
Linux常用命令
1 细节:
.  //代表当前目录
..  //代表上一级目录
cd 回车
pwd 
cd ..回车
pwd
文件处理指令:  ls
指令名称: ls
指令英文原义: list
文件处理类:
1 ls
常用参数:
-a 显示所有的包括隐藏文件,Linux下的隐藏文件 的命名是以.开头: .abc   //此文件为隐藏文件,默认ls 回车看不到此文件
-l 以长空格列出文件包括:创建日期,权限...
2 touch     //创建空文件
3 cd   
cd ~  //~符号代表用户的宿主目录   
示例:
vi ~/.vimrc     //代表修改此用户宿主目录下的.vimrc
vi ~/.bashrc
4 pwd
5 cp    //文件 的复制
示例:
cp old_file new_file     //copy普通文件
6 rm    //删除文件
示例:
rm filename
7 mkdir    //创建目录
示例:
mkdir dir_name
8  rmdir      //删除目录
示例:
rmdir dir_name     //注:此目录中没有文件才可删除
3月2日
1 压缩,归档指令集
.gz,  .bz2, .tar(归档), .zip, .rar
.gz:
gzip(压缩), gunzip(解压)
.bz2:
bzip2, bunzip2
.tar:
tar可以压缩,解压缩.gz, .tar, .bz2
练习:
在MyTar目录下touch 5文件中,并且使用tar指令,对MyTar目录进行.gz, .tar, .bz2三种格式的压缩,归档
# mkdir MyTar
# cd MyTar
# touch 1.txt 2.txt 3.txt 4.txt 5.txt
# cd ..
压缩.gz格式
# tar zcvf MyTar.tar.gz MyTar
z使用.gz算法
c归档
v看压缩过程
f创建目录
压缩.bz2格式
# tar jcvf MyTar.tar.bz2 MyTar
j使用.bz2算法
一般来说.bz2压缩的比例比.gz要大
压缩.tar格式--归档不压缩
# tar cvf MyTar.tar MyTar
注:使用tar进行压缩,压缩包的后缀一定要标准
将参数c替换为x,那么将进行解压操作
有时遇到不能解压的数据包:可以使用file指令,查看此数据包的具体压缩
# file 文件名加解压的后缀名
例: # file MyTar.tar.gz2
压缩.zip格式
# zip MyTar.zip MyTar -r
解压.zip格式
# unzip -d new_dirname MyTar.zip
-d 将解压文件放入新的目录中
rar格式,由于是不开源的,需要下载二进制rar
解压工具
解压.rar格式
# rar x name.rar   //解压
google: rar for linux
2 网络,通信指令集
查看ip地址
# ifconfig
设置ip地址
方法1:仅在当前生效,当再重启开启将会恢复
# ifconfig eth0 192.168.0.22    
方法2:修改网卡配置文件
1 通过工具修改
1.1 setup   //工具1
1.2 system-config-network   //工具2
网卡配置文件的存放地址:
/etc/sysconfig/network-scripts目录下存放
ifcfg-eth0    //第一张网卡的配置文件
dhcp相当于 windows的自动获得ip地址,但是在网络中需要dhcp服务器
Dynamic Host Configuration Protocol(动态主机配置协议)
2 手工修改
修改后如何立刻生效?
1 service network restart   //读取配置文件
  RedHat使用方法
2 /etc/init.d/network restart    //读取配置文件
     标准的UNIX使用方法
一个网卡绑定多个IP:
192.168.5.22
# ifconfig eth0:0 192.168.5.22       //eth0代表是第一个网卡
测试:
# ping 192.168.5.22
ctrl + c 结束
网卡间的相互通信:
1 查看内核镜像:
cat /proc/sys/net/ipv4/ip forward
值为: 0            //网卡间无法通信
值为: 1           //代表网卡间可以通信,可以做网关,路由
一般的路由器,防火墙
Linux + iptables + Web服务器
通信实现1  临时实现:
# echo 1 > /proc/sys/net/ipv4/ip_forward     // > 代表输出重定向
# cat /proc/sys/net/ipv4/ip_forward
修改默认的ttl值:
# cat /proc/sys/net/ipv4/ip_default_ttl
# echo 128 > /proc/sys/net/ipv4/ip_default_ttl
测试
# ping your_ip
忽略其他电脑的ping请求(忽略icmp):
# cat /proc/sys/net/ipv4/icmp_echo_ignore_all
值为: 0           //代表响应ping请求
值为: 1           //不响应ping请求
# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
测试
# ping your_ip    //没有任何返回
RHCE动态修改内核参数
内核参数的配置文件:
# vim /etc/sysctl.conf
在第七行把0改为1 ,在加 net.ipv4.ip_default_ttl = 128
使内核参数配置文件立刻生效:
# sysctl -p
# mii-tool         //测试网线链接状态
3 系统关机,其他指令集:
指令名称:shutdown
指令所在路径: /sbin/shutdown
执行权限:root
# shutdown -h now    //系统馬上关机
# shutdown -r now    //馬上重启
shutdown -h +5          //5分钟后关机
# shutdown -h 18:30    //18时30分关机
# shutdown -c        //取消关机操作
其他指令:date
范例: $ date "+Date: %Y:%m:%d Time:%H:%M:%S"
$ date 010123591970.01
设置系统时间为1970年1月1日23时59分1 秒
$ date -u     //显示UTC时间
# cal  //查看当前日历
# cal 4 2009      //09年4月
查看当前系统版本:
# uname
# uname -a
文件处理指令:ls
ls -l -d      //查看目录属性
示例:  # ls -l -d MyTar    //查看MyTar文件的属性
ls -l             //查看目录文件
whois 163.com     //查看域名的详细信息
Linux系统剩余部分:
用户管理
文件系统管理
Linux软件包管理
进程管理
Shell编程
网络,安全
3月3日
用户分类(以UID划分)
管理员
UID=0 GID=0
普通用户
UID>=500
伪用户:
UID: 1-499
组及其分类
组,是若干个用户的逻辑集合
组分为:
私有组
当在创建一个新用户时,若没有指定他所属于的组,Linux就建立一个和该用户同名的私有组
标准组
标准组可以容纳多个用户,若使用标准组,在创建一个新的用户时就应该指定他所属的组
相关配置文件
口令文件:/etc/passwd
影子口令文件: /etc/shadow
组文件: /etc/group
用户配置文件:
/etc/login.defs
/etc/default/useradd
新用户基本信息: /etc/skel
/etc/passwd文件格式
字段                               含义
用户名                     用户登录系统时使用的用户名
口令                         加密口令
宿主目录               用户登录系统后所进入的目录
命令解释器          指示该用户使用的Shell, Linux默认为bash
/etc/group文件格式
字段                                含义
组名                             用户登录时所在的组
组口令                           一般不使用
GID            组标识号
组内用户列表            属于该组的所有用户名表
创建用户的过程
分别在/etc/passwd, /etc/group和 /etc/shadow文件中添加一笔记录
创建用户目录
在用户目录中设置默认的配置文件
设置用户初始口令
使用useradd命令添加用户
useradd -g group1 -e 12/31/2002
常用参数
e 登录失效时间
修改用户帐号
手工修改帐号文件
使用usermod命令
usermod -l newuser -d /home/newdir -g newgroup user
将用户user的登录名改为newuser,加入到newgroup组中,用户目录改为newdir
注意:只修改帐号文件 ,不修改宿主目录
usermod -G newgroup username
将用户username添加到newgroup标准组中
禁用和恢复用户帐号
禁用
# usermod -L username
# passwd -l username
恢复
# usermod -U username
# passwd -u username
用userdel删除用户帐号
userdel -r ul
-r: 删除用户目录
分析userdel的过程
从帐号文件中移去用户表项
删除用户宿主目录
练习:
使用vi手工添加一覓用户,并且可以在图形状态正常登录
先配置/etc/passwd, /etc/group和 /etc/shadow
# ls
# cd
# cd /home/
# mkdir sam
# ls
# chown sam:sam sam -R
# cd /etc/skel/
# ls
# cp .bash
# cp .bash* /home/sam/
手工删除用户帐号
使用 find命令查找属于该用户或组的文件
# find / -gid 503 -uid 503
对需要保留的文件进行 chown/chgrp操作
对不需要的文件进行删除
手工清除帐号文件中的相关表项
递归地清除用户宿主目录
组的管理和使用
groupadd -g 888 group2
创建一个组group2,其GID为888
groupdel group2
删除组group2
groupmod -n group2 group22
修改group2组名为group22
Linux文件系统简介:
1 SuperBlock
  SuperBlock可以理解为磁盘数据的冗余,可以提供恢复机制,它存在磁盘的任意位置
2 Inode
文件说信息表,存放文件说明信息的数据结构,具体内容有:
文件所有者
访问权限
创建时间
文件大小...
ls -i       //查看文件的索引
文件类型
普通文件: 文本文件,二进制文件
目录文件
链接文件: 硬链接,软链接
设备文件: 块设备,字符设备
# ls -l /dev/sda1
# ls -l /dev/input
# ls -l /dev/input/mouse0
rwx 对文件和对目录的含义与区别:
代表字符      权限                    对文件的含义                               对目录的含义
r      读权限             可以读文件的内容             可以列出目录中的文件列表
w      写权限             可以修改该文件                 可以在该目录中创建、删除文件
x     执行权限           可以执行该文件                 可以使用 cd 命令进入该目录
常用指令:
1 df       //查看硬盘(每个挂载点的使用状态)
  df -h    //以十进制列出来
2 du -sh   //查看文件所占空间
  du -h    //看到运算过程
3 fdisk -l    //列出当前所有硬盘的分区状态
# fdisk /dev/sda     //对此进行分区操作
m     //获得帮助
p     //打印分区表
n     //添加分区
d     //删除分区
w     //写入分区表并且退出
q     //不保存退出
分区操作:
# fdisk /dev/sda---> m(帮助)--->e(扩展分区)--->3加车--->回车--->p--->n---I-->回车-->+5M---p-->m--->q(不保存退出),w(写入分区表并且退出)
注:新分区必须创建文件系统后才可以使用
# mkfs.ext3 /dev/sdaxxx
将创建好的Linux文件系统分区,经过挂载才可使用:
# mkdir /mnt/mydisk
# mount /dev/sdaxxx /mnt/mydisk
# cd /mnt/mydisk     //此时可以使用新分区
3月4日
常用管理命令:
fsck: 单用户模式下,检测修复文件系统
# fsck /dev/hda
# fsck -y /dev/hda
dd:文件拷贝
硬盘对拷
# dd if=/dev/hda of=/dev/hdb
添加磁盘或分区
划分分区(fdisk)
partprobe( )
fdish /dev/sda
n    /dev/sda3
w
partprobe
mkfs.ext3 /dev/sda3
mkdir /mnt/mydisk
mount /dev/sda3 /mnt/mydisk
开机mount挂载配置文件:
/etc/fstab
# vi /etc/fstab
光盘的使用:
# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom
# cd /mnt/cdrom
操作完毕后
# umout /mnt/cdrom    //卸载光盘使用
# eject               //弹出光驱
U盘的使用:
# mkdir /mnt/myusb
插入U盘
# fdisk -l     //看内核是否识别了新的USB设备
如果内核识别了USB设备
# mount /dev/sdxn /mnt/myusb
sdxn中的xn是要改变的
# cd /mnt/myusb     //使用U盘
# cd .. && umount /mnt/myusb    //卸载U盘   
卸载U盘解决U盘乱码问题:
# mount -o iocharset=utf8 /dev/sdxn /mnt/myusb
# cd /mnt/myusb
如果数据较大可以尝试使用:
# sync     //将数据同步  
Linux下软件包的管理:
1 RPM
安装:
rpm -ivh xxx.rpm
安装中碰到的问题:
1  此软件包已经被安装:
# rpm -ivh xxx.rpm ---replacepkgs
2 文件冲突:
# rpm -ivh xxx.rpm----replacefiles
3 未解决依赖关系:
# rpm -ivh xxx.rpm -----nodeps
安装后在打指令
# acroread      //AdobeReader_chs-8.1.3-1.i486.rpm
# /opt/real/RealPlayer/realplay    //player.rpm
# qq    //linuxqq-v1.0.2-beta1.i386.rpm
升级:
rpm -Uvh xxx.rpm
U更新,如果此软件包不存在,那么U的参数等于i
卸载
# rpm -e
示例:
卸载刚才的 realplayer:
# rpm -e RealPlayer
查询
# rpm -qa       //列出当前系统安装所有软件包
# rpm -qa | grep RealPlayer
# rpm -qa | grep real -i    //模糊查找,速度慢
# rpm -q RealPlayer    //速度快
查询软件包安装了哪些文件:
# rpm -ql RealPlayer
查询一个文件属于哪个软件包:
# rpm -qf /etc/inittab   
所以以上指令都是对已经安装的软件包进行查询
没有安装软件的查询:
查看软件包相关信息
# rpm -qip xxx.rpm
示例:
# rpm -qip player.rpm
查看此软件包,将会安装哪些文件在系统中:
# rpm -qlp xxx.rpm
软件仓库
CVS        //源程序代码版本的控制工具
Concurrent Versions System   
作用: 团队开发,源代码合并,源代码根据日志恢复
VSS----windows的源码版本控制工具
SubVersion       //下一代CVS
他们都是C/S架构:
S-server 用于在数据库中保存源程序
C-client 程序员编写程序后提交源程序
在Linux下搭建一个Subversion服务器,并且使用eclipse作为客户端进行团队开发
1 搭建SubVersion服务器:
1.1 # rpm -ivh subversion-1.5.5-0.1.el5.rf.i386.rpm --force     //强制安装
1.2 # rpm -ql subversion     //查看安装哪些文件
1.3 # svnadmin create /opt/src-repo        //创建源程序数据库
1.4 # cd /opt/src-repo/
1.5 # ls
1.6 # cd conf
1.7 #  vi svnserve.conf
       anon-access = read    //匿名可读源程序
       auth-access = write   //验证可写数据库
       password-db=passwd   //密码验证passwd配置文件
1.8 # vi passwd            
启动服务器
1.9 # svnserve -d --root=/opt/src-repo
检测服务器是否启动
1.10 # netstat -autpn | grep 3690    //看到:LISTEN代表启动成功
2  使用eclipse作为客户端
1 运行eclipse
2 解压svneclipse插件
unzip -d svne svneclipsexxx.zip
3 通过eclipse安装插件
使用svn数据库
1 新建项目
2 选择项目--右键-->Team-->Share Project--->SVN--->创建新的资源库位置-->URL:svn://127.0.0.1---->下一步--->完成
提交项目到数据库
3 选择项目--->右键--->Team--->提交
作业:
将原来的项目提交到自己的Subversion服务器中,并且可以和同桌进行彼此间代码的共享,形成团队开发
3月6日
SVN或CVS在实际开发中的的流程:
1 需求分析
2 项目说明书
3 项目经理进行项目架构(SSH):
   1  接口描述
2 SSH配置文件
   3 将整个项目commit SVN或CVS服务器
4 程序员 checkout 项目
5 程序员编写自己的项目模块,并且commit
6 进行测试
7 试运行
8 向客户发布,交付
9 对于客户培训,维护
yum 包的安装与管理
# yum install   
# yum remove  
# yum update
# yum search
# yum list
源码包的安装与管理:
c, c++: GCC--GNU Compiler Collection
编译C语言: gcc -- GNU c Compiler
编译C++语言: g++ -- GNU c++ Compiler
          gcj
gcc -v        //查看版本
配置,检测编译环境:
1 解压源码包
2 cd解压后源码包
3 ./configure
编译:
4 make
读取源码包的配置文件: Makefile
安装:
5 make test      //测试
6 make install   //安装
卸载:
make uninstall
fcitx    //输入法
1 解压fcitx
2 cd fcitx-3.1.1
3  ./configure
4 make
5 make install
卸载当前RHEL的输入法
# yum remove scim
输入法:ibus, scim
配置fictx的输入法环境变量
将fcitx.env中的内容复制到.bashrc最后
reboot
打开终端:
# fcitx
配置完毕
# cd fcitx--fcitx-3.1.1/doc/
# fcitx3.pdf
fluxbox  //轻量级图形系统--比kde, gnome占用内存小
1   解压
2 ./configure
3  make -j2
4 make install
细节:手工配置gdm,将fluxbox加入--会话
5 cd /usr/share/xsessions
6 cp gnome.desktop fluxbox.desktop
7 vi fluxbox.desktop
修改内容为:
[Desktop Entry]
1 Name=Fluxbox
2  将Name前缀[xx]全部删除
3 Exec=/usr/local/bin/fluxbox
4 TryExec=/usr/local/bin/fluxbox
5 Icon=
6 Type=Applicatin
:wq!保存退出
ctrl + alt + Backspace
在gdm的会话中选择fluxbox进入新安装的 fluxbox
测试fluxbox:
右击鼠标右键-->flux menu --> System Styles -->
点击鼠标右键-->Terminals ---> gnome-terminal
Linux图形系统概念:
C/S构架:
S--xorg-server            //图形系统服务器
C--kde, gnome, fluxbox    //图形系统客户端
相比之下:比windows的图形运行慢一些,因为要通过Client+ Server的沟通才可以显示图形界面
xfce4
Shell脚本的安装:
1  解压
2 ./setup.sh
webmin工具简介:
perl语言编写,应用于基于Web的方式, 对于Linux系统进行,服务的管理工具
安装完毕:
firefox https://localhost:10000 &
用户名: admin
密码: admin
Linux软件包包总结:
1 rpm, -i,v,h,U,e,q,p,V
2 yum从互联网服务器根据yum服务器中的数据库进行软件包的安装,升级,删除,查找
yum客户端的配置:
# cd /etc/yum.repos.d
# yum update   //更新本地yum数据库
                                        //生效修改后的配置文件
3  源码包的安装:  ./configure && make && make install
4 shell脚本的安装
5  二进制安装: chmod u+x xxx.bin && ./xxx.bin
Linux下常用软件介绍:
1 音频:
windows      Linux
winmap      audacious(gtk1),amarok(qt4)
2 视频:
风暴                        mplayer_win32codes, realpalyer, vlc
3 办公:
office      openoffice,gedit, kate,
4 图形处理 2D:
photoshop       gimp
4.1 3D:
3dmax,maya      maya, blender
5 IM
msn,qq         pidgin(msn,icq),qq, kopete
捷径安装以上软件:
1 到 google, baidu 找到 f10的yum客户端配置文件
2 将配置文件copy到/etc/yum.repos.d/
3 # yum update    //读取配置
4 # yum search 所需要的软件
示例:安装gimp
# yum search gimp   //查看列出的名字 gimp, i386
# yum -y install gimp.i386
3月7日
进程控制
控制正在运行的进程的行为
控制内容:
查看进程状态
进程的挂机和恢复
杀死或重启进程
改变运行优先级
# w            //查看用户信息
查看系统中的进程ps  
常用参数
a: 显示所有用户的进程
u: 显示用户名和启动时间
x: 显示没有控制终端的进程
e: 显示所有进程,包括没有控制终端的进程
l: 长格式显示
w: 宽行显示,可以使用多个w进行加宽显示
# ps aux
# ps le      
PPID    //是pid的负进程
NI     //进程的优先级别
# pstree     //以树的分式,列出当前系统中的进程关系
一般使用ps有两个目的:
1  列出当前系统中所有运行的进程
   # ps auxw
2  查看某一个进程的pid, 以便对其控制
方法1   # ps aux | grep 进程名
方法2  # pidof 进程名
  示例:  pidof gedit
2 kill 控制进程:
  kill是发送信号给进程的
# kill -l       //列出所有kill可发出信号的名字
9--SICKILL      //为9的信号是杀死信号,它是Kill默认的信号
19--SIGSTOP     //停止
18--SIGCONT     //使停止的进程继续
实验:
控制gedit的暂停,继续,结束
# pidof gedit
# kill -19 xxx   //查看gedit的状态
# kill -18 xxx   //继续运行
# kill -9 xxx    //杀死gedit
nice 控制进程的优先级别:
-20 到 19
数值越低 被cpu的时间就越多,与windows相反
默认为 0
top 类似于windows进程管理器
它是Linux下最强大的进程管理工具
# top
按s键可以改变进程刷新列表时间, 例:1.0
q 键退出
top它是一个工具,在进入top后,可以查看默认的top进程,它可以接收用户的指令,来控制进程
指令:
s    //控制top进程列表,刷新时间
h    //获得帮助
q    //退出top工具
l    //可以检测各个cpu的运行情况
实验:
# top
按k键,输入打开进程的PID,回车,在输入9, 就杀死了
注意:因为top会实施检测系统中的进程,所以它也比较消耗资源
top:可以理解为:ps,kill,renice的集合
进程的挂起与恢复:
实验:
# gedit
ctrl + z   //将gedit进行挂起
# bg       //将gedit切换后台运行
# fg       //可以再将gedit切换到前台运行
注: 所以一般在运行图形程序时,都将其放在后台运行,不占用当前的指令终端,在使用时只需要在图形程序指令的后面加& 符号
救命:
# gedit &
# jobs      //查看所有后台进程
计划任务:
cron        //可以周期性的安排进程执行
1 软件支持:
# rpm -q anacron
2 服务器开启:
# pidof crond   //如果看到pid代表服务器正常运行,如果没有运行,可以
# chkconfig --levels 35 crond on
# /etc/init.d/crond start
如何安排计划任务?
crontab文件格式
minute hour day-of-month month-of-year day-of-week commands
其中
Minute                一小时中的哪一分钟 [0--59]
hour                  一天中的哪个小时 [0--23]
day-of-month          一月中的哪一天 [1--31]
month-of-year         一年中的哪一天 [1--12]
day-of-week           一周中的哪一天 [0--6]
commands              执行的命令
书面注意事项:
1   6个位置不能为空,如果不写以 * 代替
2 commands写出指令的绝对路径
实验:让cron调用/bin/cp 指令将 /etc/inittab备份到 /root/inittab.bak, 时间为: 当前系统时间的后1分钟
编辑计划任务
# crontab -e
输入 27 10 * * * /bin/cp /etc/inittab /root/inittab.bak     //每月,每天,每周的10:27分执行后面的指令
crontab -l    //列出任务
计划任务的存放位置:
# cd /var/spool/cron
进程管理总结:
1 # ps auxw | grep xxx
2 pidof
3 kill, killall(killall根据名字发送信号)
4 top
5 ctr+z, bg, fg, jobs
6 cron
killall实验:
# gedit &
# killall -9 gedit
sudo配置和使用(安全类):
sudo 可以为普通用户分配超级用户的权限
sudo的配置与:
1   软件支持
# rpm -q sudo  
2   配置sudo
# visudo    //进入sudo配置界面,操作: vim
开两个终端:
终端1 : root            //visudo
# visudo
在76行下面加上一行,o键,添加 student ALL=(ALL)       ALL  //赋于student所有的权限
终端2:  # su - student    //测试sudo
        # reboot && init 0 && ifconfig
配置好后
# sudo reboot
password:    //输入student密码(student)
$ vi `/.bashrc
export PATH=$PATH:/sbin:/usr/sbin
$ . .bashrc
$ sudo ifconfig
1 raid    //磁盘阵列管理(便于数据恢复)
2 LVM     //逻辑卷管理(动态增加,减少分区大小)
3月9日
Linux网络服务简介:
1 DHCP 服务器,帮助其他计算机获得IP地址
2 DFS  服务器,像访问本地硬盘一样共享远程文件
3 DNS  域名服务器,域名到IP的映射:
     示例:
  www.163.com互联网是不识别这个域名的,通过客户端指定的DNS服务器,将www.163.com, 对应的IP地 址(202.10.0.20)解析给客户端浏览器
4 samba 服务器,与windows共享文件
5 Apache 服务器,Web服务器支持, html, php
6 vsftp 服务器,ftp协议的文件下载,上传
7 sendmail || qmail 服务器,邮件服务器, mail.163.com,mail.yahoo.com,www.gmail,com
8 squid 服务器,代理服务器
9 NTP 服务器,时间服务器
10 xinet服务器,超级服务器,可以帮助管理其他服务器的运行,例如: samba,ftp
Linux安全简介:
1 ACL -rwx,访问控制列表
2 SELinux,增强安全的Linux
3  网络嗅探,扫描
4 gpg    //签名验证技术,通过公钥,私钥的方式进行重要文件的加密,解密工作
5 iptables 防火墙
6 suid   //特殊权限位,可以让普通使用这个指令的时候,权限提升为这个文件的所属用户

你可能感兴趣的:(eclipse,linux,应用服务器,配置管理,vim)