鸟哥linux笔记

-----------------------------------------------------------------------------------------------------------------

当修改了/etc/profile文件,想让它立刻生效,而不用重新登录;这时就可以用source命令,用法: source /etc/profile

----------------------------------------------------------------------------------------------------

/etc/:系统的所有设定文件几乎都在此,尤其passwd,shadow 

/etc/rc.d/init.d:系统启动时加载服务的脚本文件的存放地点

/boot:启动配置文件,也是预设存放核心vmlinuz的地方

/usr/bin,/bin:用于存放一般执行文件的地方

/usr/sbin,/sbin:系统管理员常用指令集的存放地点

/dev:存放所有系统设备文件的目录

/var/log:存放系统登录文件的地方

以“.”开头的文件为隐藏文件,需要使用ls -a指令才能显示出隐藏文件的内容,而使用ls -al才能显示其属性。

------------------------------------------------------------------------------------------------

ifconfig

ifup  eth0  <==启动eth0 网卡

ifdown eth0  <==关闭eth0 网卡  //远程登录千万不要这样,不然你就悲剧了

/etc/rc.d/init.d/network restart <==重新启动网络接口

--------------------------------------------------------------------------------------------

在完全备份工具中,3个工具tar,cpio与dump都很常用。cpio的最大好处就是连一般的设备文件都可以复制过来,所以使用cpio进行完全备份是很棒的一个选择。不过需要注意的是,cpio需要借助find 或其他可以找到文件的指令的帮助才可以正常工作。

1. 使用cpio 进行备份与反备份

[root @test /root]# find / -print | cpio -covB > /dev/st0 <==备份至tap 

[root @test /root]# cpio -iduv < /dev/st0   <==用tap将数据存回系统中

2. 使用tar 备份

[root @test /root]# tar -zcvf host.tar.gz / --exclude /proc --exclude /mnt --exclude /tmp 

[root @test /root]# tar -zxvf host.tar.gz

至于部分备份,我们就以简单的tar进行说明。假如我们需要备份的数据是每天的MySQL 数据库,由于我想让每天的数据都存成不同的文件,而且文件的新旧以日期作为区分最简单,所以我可以这样做:

[root @test /root]# tar -zcvf mysql.`date +%Y-%m-%d`.tar.gz /var/lib/mysql 

[root @test /root]# tar -N '2002/07/05' -zcvf home.tar.gz /home 

只有在比2002/07/05 还要新的文件,在/home 下的文件才会被打包进home.tar.gz 中

----------------------------------------------------------------------------------------------

netstat -aup|more

ps -aux|grep 服务名

----------------------------------------------------------------------------------------------

rpm -ivh xxxx  

rpm -ivh --nodeps rp-pppoe-2.6-5.i386.RPM          <==不考虑相依模块

--nodeps:不考虑依赖属性,强制安装。

rpm -ivh --replacepkgs rp-pppoe-2.6-5.i386.RPM     <==直接覆盖掉曾安装过的套件

--replacepkgs:如果之前安装过这个套件,您想覆盖这个套件,那么不需要反安装后再安装,可以直接加--replacepkgs强制覆盖

rpm -ivh --replacefiles rp-pppoe-2.6-5.i386.RPM    <==直接覆盖掉被修改过的问题文件

--replacefiles:如果这个套件安装完毕,曾经被您修改过文件,就是安装过程中会出现confilcting files的话,可以直接以--replacefiles覆盖掉这种文件

rpm -Fvh *.RPM     <==所有在您Linux 主机上安装过的套件才能升级

rpm -qpi rp-pppoe-2.6-5.src.RPM     <==查询这个套件的详细信息,如果忘记套件的全名,那么可以使用RPM -qa | grep pakagename来选择适当的套件;若使用-qi,则可以了解这个套件的主要信息。

rpm -qpl rp-pppoe-2.6-5.src.RPM     <== 查询这个套件中有多少文件

rpm -e re-pppoe <==解除安装rp-pppoe

rpm --rebuilddb <==使用--rebuilddb来重建RPM的数据库

-----------------------------------------------------------------------------------------------

dmesg|more: 查看登录信息

uptime:查看当前时间,开机多久,几个用户,过去1,5,15分钟系统的平均负载

who,w,whoami:查看登录用户,当前用户

last:最近登录用户,太多的话用 last -数字代替,eg :last -5

hostname:主机名称

-----------------------------------------------------------------------------------------------

查找操作,建议方案:

updatedb

locate  filename

使用 whereis有时候查不出来,可能还没深入理解whereis吧,至于find,最后再使用

find  路径 参数

find / -name ytj

find / -name 'ytj*'  模糊匹配需要加单引号 (貌似双引号也OK)

find / -gid root

find / -user root

find / -type /c/d/l (c:串口设备,d:目录;l:链接)

----------------------------------------------------------------------------------------------

键盘值:

keyCode==32空格

keyCode==13回车

keyCode==27Esc

keyCode==16Shift

keyCode==17Ctrl

keyCode==18Alt

-----------------------------------------------------------------------------------------------

每个能用chkconfig管理的系统服务脚本需要两个或更多特殊注释行,第一行是该系统服务在哪些运行级别启动、启动优先级和停止优先级. 第二行是服务的描述信息,可以多行,用反斜杠续行下面是一个chkconfig能够是别的注释样本:

       # chkconfig: 2345 20 80

       # description: Saves and restores system entropy pool for \

       #              higher quality random number generation.

上面的样本意思是:该脚本将在运行级别2,3,4,5启动,启动优先级为20,停止优先级为80,

-----------------------------------------------------------------------------------------

查看Linux重启时间:

who -b

last reboot

last -x

   -a  把从何处登入系统的主机名称或IP地址,显示在最后一行。

-d  将IP地址转换成主机名称。

-f <记录文件>  指定记录文件。

-n <显示列数>或-<显示列数>  设置列出名单的显示列数。

-R  不显示登入系统的主机名称或IP地址。

-x  显示系统关机,重新开机,以及执行等级的改变等信息

-----------------------------------------------------------------------------------------------

对#!/bin/sh的认识

shell编程是以"#"为注释,但对"#!/bin/sh"却不是。"#!/bin/sh"是对shell的声明,说明你所用的是那种类型的shell及其路径所在。(#! /bin/sh 是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面跟的是解释此脚本的shell的路径)如果没有声明,则脚本将在默认的shell中执行,默认shell是由用户所在的系统定义为执行shell脚本的shell.如果脚本被编写为在Kornshell ksh中运行,而默认运行shell脚本的为C shell csh,则脚本在执行过程中很可能失败。所以建议大家就把"#!/bin/sh"当成C 语言的main函数一样,写shell必须有,以使shell程序更严密。

----------------------------------------------------------------------------------------------------

linux  shell 编程要点:

1.if后要有空格

2.[] 中括号的开头和结尾要有空格!

3. [ $1-eq"root" ]中括号中的$1和-eq和"root"之间没有空格!

-----------------------------------------------------------------------------------------------------------

vi编辑器:

撤销:shift + u;

撤销恢复:crt+r 

vi下产生swp文件后,使用rm  .文件名.swp删除

eg:rm .tomcat.swp