linux基础培训教程

头一段时间总结的教程,用于给芳芳做培训,以免被别人一问三不知。 

一、简介
n流行的OS
n32/64位
n多用户、多任务、安全性高、免费、开源
n用于服务器领域:Web Server、Mail Server等
n常见发行版:一般分为桌面版和服务器版

  比如redhat产品线:

  桌面版Fedora、服务器版RHEL

  其他常见ubuntu、centos、suse、debian等
 
二、安装和开关机
 
双系统一定要安装grub,在grub中设置windows的启动项
 
熟悉man的使用,查询命名的含义
 
sync:把内存的数据写入到硬盘中
 
n重启、关机(r重启;h关机)
shutdown –r +1 (1分钟后)
init 6
shutdown –r now (立刻)
init 0(关机)
 
n查n看当前runlevel直接输入runlevel
     0 Halt the system
     1 Single user mode
 2 Basic multi user mode
 3 Multi user mode
 5 Multi user mode with GUI
 6 Reboot the system
 
三、文件和目录
绝对路径和相对路径
 
显示所有文件(包括隐藏) ll –a /path
 
-rw-r--r-- 1 root root 46432 Aug 20  2012 install.log    
上述含义为install.log为文件;own权限为可读可写、group权限为读、other权限为可读;对应的i-node有1个文件名相关联;owner为root;group为root;大小为46432个byte;最后修改时间为Aug 20  2012
 
cd一个目录至少需要该目录的r+x权限

改变文件的群组:chgrp users install.log

改变文件的owner:chown root install.log chown mail:mail log2012.log(用户:组)

改变文件的权限:chmod 777 install.log
                             chmod u=rwx,go=rx .bashrc
                             chmod a+w .bashrc
                             chmod u-x .bashrc
一共分为(u user, g group, o other, a all)
 
umask和umask -S:创建文件和目录的默认owner、group、other的权限
chattr +a filename增加文件append only属性 
    chattr +i attrtest(i属性无法删除、修改、更名等等)
   chattr -a filename  去除文件append only属性 
  lsattr是显示文件的属性
查看文件类型用 file /etc/hosts
                           /etc/hosts: ASCII English text
查找shell命令所在的路径用which 
[root@adshadoop76 ~]# which service
/sbin/service
内置的命令用[root@adshadoop76 ~]# type cd
cd is a shell builtin
 
查找shell命令和文件用whereis(注意,它不但可以查找非内置的shell命令所在路径,而且能够找出文件所在路径)
[root@adshadoop76 ~]# whereis resolv.conf
resolv: /etc/resolv.conf /usr/include/resolv.h
 
四、文件系统和磁盘
档案系统通常会将这两部份的资料分别存放在不同的区块
   档案权限(rwx)与档案属性(拥有者、群组、时间参数等)放置到inode 中,至于实际资料则放置到data block 区块中。
superblock:记录此filesystem 的整体资讯,包括inode/block 的总量、使用量、剩余量, 以及档案系统的格式与相关资讯等;
· superblock:记录此filesystem 的整体资讯,包括inode/block 的总量、使用量、剩余量, 以及档案系统的格式与相关资讯等;
· inode:记录档案的属性,一个档案占用一个inode,同时记录此档案的资料所在的block 号码;
· block:实际记录档案的内容,若档案太大时,会占用多个block 。
 
一个block分为1K、2K、4K这三种大小,一个block只能存放一个文件的内容,超出一个block的容量,就需要多个block进行存储,所以,当文件很小,block选择很大,则导致浪费;当文件很大,block设置很小,则导致inode中记录多个block区块编号,读取速度就很慢。
一个inode大小为128bytes,有记录到block的指向
 
查看磁盘文件系统信息用如下方式:
1、df -lh查询挂载点
/dev/sda1              99M   13M   82M  14% /boot
2、dumpe2fs /dev/sda1
 
查看本机使用的文件系统:
more /etc/fstab
[root@adshadoop76 ~]# more /etc/fstab
/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0
 
[root@adshadoop76 ~]# df -lhT
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
              ext3     69G   65G     0 100% /
/dev/sda1     ext3     99M   13M   82M  14% /boot
tmpfs        tmpfs    3.9G     0  3.9G   0% /dev/shm
 
统计某个目录下面所有目录的大小
[root@adshadoop76 ~]# du -sh /usr/*
148M    /usr/bin
8.0K    /usr/etc
8.0K    /usr/games
231M    /usr/include
2.1M    /usr/kerberos
548M    /usr/lib
976M    /usr/lib64
41M     /usr/libexec
552M    /usr/local
37M     /usr/sbin
1.7G    /usr/share
64M     /usr/src
4.0K    /usr/tmp
24K     /usr/X11R6
 
hard link 只是在某个目录下新增一笔档名连结到某inode 号码的关连记录而已。
所以删除硬链接不影响原来的被硬链接文件的属性(inode)和文件内容(block),但是修改时会影响源文件的inode和block信息
ln /etc/profile .
在当前目录下创建profile的硬链接
symbolic link 产生新的inode,指向原来被连接的文件,文件类型为l
ln -s /etc/profile .
在当前目录下创建profile的symbolic link
 
四、账号和权限
/etc/passwd、/etc/shadow/和/etc/group分别维护用户名、密码和所属群组
创建一个用户(自动创建同名群组)
     useradd yuxiaoyue
把用户加入到其他组
     usermod –G othergroup yuxiaoyue
     gpasswd -d yuxiaoyue othergroup从组中删除
n查看自己的群组
     groups
groups输入后显示的第一个群组就是有效群组,在创建档案touch test之后,test的群组显示就是此有效群组
用户改变自己的有效群组
     newgrp othergroup
退出设定后的有效群组shell环境,回到初始环境
     exit
新增一个系统用户(uid小于500且没有home目录)useradd –r yuxiaoyue
useradd的时候指定shell为/sbin/nologin表示此用户无法登录系统
创建用户时,home目录数据默认来源于/etc/skel
修改密码有2种
     root登录 passwd username
     username登录 直接passwd
有个用户老捣蛋,root使该用户失效(有效)
     passwd –l username
     passwd –u username
删除某个用户userdel –r username,-r是包括删除/home/username目录,删除前,最好检查一下和username相关的档案(owner和group权限)
     find / -user ads
查询系统登陆者
     finger
 
五、vi编辑器
vi file进入 (一般模式)
dd删除一行;x删除单个字符
按“i”进行编辑(编辑模式)
按“ESC”,输入“:wq”(命令模式)
不想保存,输入“q!”
 
六、压缩和解压
2种压缩方式gzip和bzip2
压缩:tar -jcv -f filename.tar.bz2 dir
查询:tar -jtv -f filename.tar.bz2
解压缩:tar -jxv -f filename.tar.bz2 -C newdir(指定参数C可以解压到新的目录)
如果是gzip压缩,j替换成z
用unzip解压zip格式包
 
七、软件安装
源码安装
1、解压;
2、./configure;
3、make;
4、make install
软件作者通常制作好configure脚本,用来生成makefile
默认安装在/usr/local/中,可以使用--prefix=/path定制
 
[root@www ntp*]# ./configure --help | more <==查询可用的参数有哪些
--prefix=PREFIX install architecture-independent files in PREFIX
--enable-all-clocks + include all suitable non-PARSE clocks:
--enable-parse-clocks - include all suitable PARSE clocks:
 
rpm方式
软件信息被写入到/var/lib/rpm/中
安装:rpm -ivh package_name
注意prefix选项 --prefix NEWPATH

yum常用命令行命令
安装:yum install foo-x.x.x.rpm
删除:yum remove foo-x.x.x.rpm或者yum erase foo-x.x.x.rpm
升级:yum upgrade foo或者yum update foo
查询:yum info foo
搜索(以包含foo字段为例):yum search foo
显示依赖关系:yum deplist foo

软件签名验证
检查软件的MD5和sha1
md5sum MySQL-5.6.14-1.el6.i686.rpm-bundle.tar
2684a0be1a51f41bf1334f4be2ebfb7a
sha1sum MySQL-5.6.14-1.el6.i686.rpm-bundle.tar
0d5600b31cb9fc9b437cf4b3bbbc1bea0a695bc1
然后拿此数字和软件提供的字符串对比,一致表示没有篡改

八、SHELL相关
变量
读取变量
     echo $PATH
设置变量
     PATH=$PATH:/home/yuxiaoyue/shell
     MYVAR=“Test $PATH” //输出Test xxx(xxx代表PATH真实内容)
     MYVAR=‘Test $PATH’ //输出Test $PATH
     MYVAR=`uname -a`等价MYVAR=$(uname -a)
取消变量unset MYVAR
转义符号\:如name=vbird\’s\ name
普通变量追加:name=“$name”appendcontent
输入bash,会启动一个新的bash环境,变量无法共享
把变量导出为环境变量
     export MYVAR,这样子shell环境也能读取
列出所有的环境变量使用env、export
列出所有变量(含用户定义和环境变量)用set
export一个普通变量后,它就成为了一个环境变量
 
管线命令
『| 』仅能处理经由前面一个指令传来的正确信息,也就是standard output 的信息,对于stdandard
error 并没有直接处理的能力。,例如less, more, head, tail 等都是可以接受standard
input 的管线命令啦
cut用法
    echo $PATH | cut –d ‘:’ –f 2-5
    取出path环境变量中第2-5个冒号分隔的内容
    export | cut -c 12-
    取出每行的从第12个字符后面的所有字符
cut 主要的用途在于将『同一行里面的数据进行分解!』,处理多空格相连的数据时不太适用
type、which
     在PATH中查找输入的bash命令,找出路径和类型
反斜杠\回车,实现多行输入一个完整的命令
grep
     last | grep –v ‘root’ 显示非’root’的登录用户历史
/etc/profile可以修改path环境变量
ll  | grep ^d可查看子目录,ll –d只列出所在目录

iostat vmstat netstat的分析
     netstat –tnlp | grep 80
netstat -tlup | grep rsync
tcp 0 0 192.168.201.110:rsync *:* LISTEN 4618/xinetd
tcp 0 0 www.vbird.tsai:rsync *:* LISTEN 4618/xinetd
表示xinetd启动的rsync服务

FAQ
为啥文件有内容,但是在ll中查看大小为0
     因为它位于内存中,如/proc、/selinux等
如何以文字模式开机操作
     改一下/etc/inittab试试看
如何启动自己的shell或者服务
     vi /etc/rc.d/rc.local试试看
/etc/init.d/下面都是系统开机初始化的服务sh脚本,等同于service httpd start和chkconfig httpd on
     /etc/init.d/httpd start == service httpd start
     ==chkconfig httpd on
 
常见命令
date
cal
bc
cd
pwd
mkdir
rm
ls和ll
cp
mv
cat -n和nl
more
less
head -n 20
taif -fn 400
od

相关推荐