linux汇总整理-系统篇(内容很多,还需进一步拆分细化)

  • 开源界名言"RTFM"!!意思是:“去读那些他妈的手册”(Read The Fucking Manual)

  • linux inode 好好理解

  • 取消某用户的登录密码
    打开/etc/passwd文件,如下,将kxsh用户的x删掉。之后kxsh用户就可以跳过密码输入过程了。

  • 文件冲突
    在公司经常遇到同部门人使用SecureCRT连接Linux服务器,同时打开同一个文件,当自己再打开此文件(如:build.sh),便显示如下信息:
      Swap file “.build.sh.swp” already exists! [O]pen Read-Only, (E)dit anyway, ®ecover, (Q)uit, (A)bort:
      这时我们在Linux界面使用命令:
      ls -a (隐藏文件都以.开头,我们如果知道文件名,在前面加个点就可以了) 可查看当前目录下多出与打开的文件同名的.swp文件,显示的是build.sh.swp
      此时我们可以删除这个.swp文件,当再打开build.sh文件时,便不会弹出以上信息。
      如果当你使用SecureCRT编辑到一部分,突然自动断网了,或者其他原因导致连接不上服务器了。此时弹出以上信息时,我们输入R ,可继续按照之前的没有编辑完的进行编辑。

  • shell简介
    shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接受用户输入的命令并把它送入内核去执行。
    实际上,shell是一个命令解释器,它解释用户输入的命令并把它们送到内核。

开机自动运行的脚本放在/etc/rc.local中。定时运行的脚本可以放在/etc/cron.d目录下。

  • 顺利启动之后系统进入如图所示的界面。

    第一行显示的是您的Linux发行商与发布版本,还有安装的软件等级(i586)。
    第二行显示的是您的Linux核心版本,以及硬件等级(i686),那么什么是tty1呢?
    第三行第四行是登录用户名和口令。
    第五行则是正确登入后才显示的信息,最左边的root显示的是当前用户的账号,
    @之后接的test是主机名称,最右边的root指的是当前所在目录,
    #则是我们常常讲的提示符。

  • 开机自动运行的脚本放在/etc/rc.local中。定时运行的脚本可以放在/etc/cron.d目录下。

  • 文件名以“.”开头的是隐藏文件,查看隐藏文件的方法:ls -a
    ls -l显示的文件信息:
    “-”开头为文本文件或二进制文件;
    “d”开头为目录;
    “b”开头为存储设备;
    “c”开头为外接设备,如键盘、鼠标等;

  • 系统肯定有很多的隐藏文件。如何显示
    $ls -al :显示所有文件(包括隐藏文件)

  • 要安装多系统,例如安装windows和linux在同一个硬盘的不同分区下,可能会出现文件系统不识别的情况。linux的文件系统一般是ext3,
    而windows一般是ntfs。但是linux识别的文件格式多一些。如何查看linux是否支持某个文件格式呢?
    方法:到/lib/modules/2.6.18-164.el5/kernel/fs目录下查看,如果有你想要的格式,那么这个核心就支持它。
    备注:目录中加颜色部分不确定,modules目录下只有一个子目录,根据系统不同而名称不同。

  • 添加用户的同时指定所在的组

    useradd -g vbirdgroup vbirduser5 创建vbirduser5用户,并指定所属用户组为vbirdgroup(此时不会创建和用户同名的分组)

    useradd -G vbirdgroup vbirduser5 创建vbirduser5用户,并指定所属用户组为vbirdgroup和vbirduser5(vbirduser5为自动创建的分组)

  • 关于空间使用情况
    fdisk:Partition table manipulator for Linux 磁盘分区表操作工具
    df:report file system disk space usage 显示磁盘各个分区的挂载和使用情况
    du:estimate file space usage 显示每个文件和目录占用的空间大小
    例如:
    #fdisk -l:显示磁盘的分区情况
    #df -h:显示磁盘的挂载和使用情况(-h参数:human readble)
    #du -h:显示当前目录下所有文件的空间占用情况
    #du -sh:只显示当前目录大小 // 很常用!!
    #du -ah:显示当前目录及其子目录、文件的大小

  • 关机&&重启命令
    关机:shutdown -h now 或 poweroff
    重启:shutdown -r now 或 reboot

  • linux中需要注意的几个目录
    /usr/share/doc/ :有很多重要的文档,例如redhat的帮助文档,中英文都有。多看看没坏处!
    /var/log/ :默认情况下,linux会将大大小小的事件都写入到日志文件中。如果发现系统有问题,查看该目录下的日志基本可以解决大多问题。

  • linux中修改了网络配置需要重启网络服务才会生效。
    重启linux服务:service network restart

  • 防火墙
    #service iptables status 查看当前防火墙状态
    #service iptables start 启动防火墙
    #service iptables stop 关闭防火墙
    #chkconfig iptables off 不让防火墙开机启动

  • 软链接VS硬链接

    如上图所示,cdrom -> hdc 表示cdrom是hdc的一个快捷方式。这就是软连接。
    真正的块设备文件是hdc。(以b开头的文件为块文件,可以随时读写,如硬盘光盘等)
    备注:软链接和硬链接的创建
    $ln nihao.txt tahao.txt 为nihao.txt文件创建tahao.txt的硬链接(nihao.txt必须已经存在且tahao.txt文件不存在)
    $ln -s nihao.txt haohao.txt 为nihao.txt文件创建haohao.txt的软连接(即快捷方式)

  • 查看当前linux系统支持的文件系统格式
    /lib/modules/2.6.18-164.el5/kernel/fs 目录下为当前系统支持的文件系统格式。

  • rpm软件安装包中有的是devel的,什么意思呢?
    为了节省使用者的资料量,目前的distributions 在释出软体时, 都会将软体的内容分为一般使用与开发使用(development) 两大类。
    所以妳才会常常看到有类似pam-xxrpm 与pam-devel-xxrpm 之类的档名啊!而预设情况下,大部分的software-devel-xxrpm 都不会安装,
    因为终端用户大部分不会去开发软体嘛!

  • /etc/sysconfig/i18n文件
    首先,i18n是国际化的意思(i和n是Internationalization的首字母和尾字母,i和n之间正好有18个字母)。

  • df和fdisk的区别。
    df是统计硬盘使用率的,df -h(human)
    fdisk -l显示硬盘分区信息的,用途不同显示的数据也不同。

  • 对所有用户设置自动注销功能,登录5分钟后自动注销
    首先,以root用户登录系统,输入 vi /etc/profile 命令,编辑profile文件。
    查找TMOUT,若没有,则可以在文件最后添加如下语句:
    export TOMOUT=300 ##300表示自动注销的时间为300秒。
    如果查找到了,直接设置时间。
    编辑好文件后,保存,退出,重新登录,设置生效。

  • 如何知道当前系统是32位还是64位?
    在终端执行:$uname -m
    输出:i686,系统是32位;
    输出:x86_64,系统是64位;
    PS:在64位系统下可以安装ia32库从而可以运行32位程序,但反过来是不行的。

  • 用户、用户组操作
    注:linux下群组的好处(转自《鸟哥的linux私房菜》)
    那么为何要配置文件所属的群组?其实,群组最适用的场合就是团队开发。举个例子,假如在我的主机上有两个团体,第一个团体名称为testgroup, 其成员包括test1,test2和test3,第二个团体名称为treatgroup,其成员包括treat1,treat2和treat3。这两个团体共用同一块资源,但是要缴交同一份报告,这需要每组成员可以修改自己团体内任何人建立的文件,且不能让非自己团体的人看到自己的文件内容!这个时候怎么办?在Linux下很简单,经由简易的文件权限设定,就能阻止非自己团队(亦即群组)的其他人阅览内容。而且可以让自己的团队成员修改我所建立的文件。同时,如果我自己还有私人隐密的文件,还可以设定成让自己的团队成员也看不到我的文件数据,很方便吧!另外,如果teacher这个账号是testgroup与treatgroup这两个群组的老师,他想同时观察两组的进度,因此要求两边的群组都能查看,这个时候,您可以设定teacher这个账号同时支持testgroup与treatgroup这两个群组,也就是说,每个人都可以有多个群组的支持。

# useradd testuser:添加testuser用户。(在/homo目录下创建了testuser目录;在/etc/passwd文件中添加了一行数据)
	注意:当添加一个用户不指定它属于哪个分组时,会在/etc/group文件中添加一个组(即添加一行数据),组名就是新添加的用户名。这个用户所在的组就是新添加的这个同名的组。
# userdel testuser:删掉testuser用户。(删除用户后,其用户主目录仍然存在,需手动删除)
# groupdel testgroup:删除组
# useradd testuser2 -g testgroup:添加testuser2用户,指定该用户属于testgroup组。
# usermode -g testuser testgroup:将testuser所属用户组改为testgroup。
# passwd testuser:修改testuser用户的密码
# groupadd testgroup:添加一个用户组。(在/etc/group文件中添加了一行数据)
# su user:切换到user用户
# su - user:切换到user用户(同时切换成user用户的环境变量)
  • 查看本机ip地址
    /sbin/ifconfig eth1|grep ‘inet addr’|sed -e ‘s/^.*inet addr://g’|cut -d ’ ’ -f1
    可以重命名一个命令,使其可以直接查出ip地址。

  • 判断一个执行文件是32位还是64位?
    终端执行:$ file /usr/bin/python2.6
    /usr/bin/python2.6: ELF 32-bit LSB executable[…] 写的很清楚

  • 查看当前哪些用户登录系统:w比finger和who命令更好用,因为w命令还能知道该用户在做什么。

  • 安装好linux后,根目录下有boot、bin、sbin、etc等目录,boot下有个vmlinux文件,这个文件就是linux的内核,就是目前世界上
    最厉害的黑客linux带头写的那个东东。

  • linux软件的一般安装目录
    /usr/share/目录:如QQ for linux
    /usr/local/目录:如永中office等

  • linux内核下载地址
    http://www.kernel.org/pub/linux/kernel

  • 除了SELinux以外,没有任何东西可以限制root用户

  • selinux
    selinux是linux上最杰出的一个安全子系统。
    shell命令中对文件的操作命令存在如何处理文件的安全上下文的问题,一般通过选项“-Z”可对文件安全上下文进行特殊处理。
    如:ls -Z可以显示文件的安全上下文,ps -Z可以查看进程的安全上下文,cp -Z可以给拷贝的文件指定安全上下文等。
    默认下,mv操作保持安全上下文不变,创建和拷贝的文件继承父目录的安全上下文。默认操作下,操作后的文件可以因文件
    安全上下文的变化造成无法运行,此时,还可以通过选项“-Z”指定文件的安全上下文。
    在targeted策略下,进程的域类型数量较少,内核线程的安全上下文一般为system_u:system_ r:kernel_t,用户进程一般为
    user_u:system_r:unconfined_t,后台进程一般有特殊的安全上下文。从这里可以看出,targeted策略对后台进程进行严格的
    权限限制,而对用户进程进行一般的限制。使用命令ps -AZ可以看到进程的安全上下文

  • fuser命令:用指定的文件或文件系统查看进程号。也就是查看那些进程用到了某个文件或目录。使用方法见5

  • linux命令行下任务管理器(功能和Window下的一样)
    $:top
    打开之后,q退出,s修改刷新频率

  • 查看文件的16进制内容
    问题:有些文件不是文本文件,直接用more命令没法查看。
    解决:查看16进制编码
    方法:$:hexdump -C filename

  • 关于linux目录需要注意的几点
    /tmp:一般只有启动时产生的临时文件才会放在这里,我们自己的临时文件都放在/var/tmp目录下

  • linux下的库文件
    *所谓编程库就是指始终可以被多个linux软件项目重复使用的代码集。库是linux软件开发所追求的目标。
    *linux下库文件分为两类:共享库和静态库。共享库是程序在运行时动态加载;静态库是程序编译时静态加载。
    *linux的库文件一般在/lib和/usr/lib目录下,其中/lib下存放的是系统启动需要的库文件,没有该目录则系统无法正常运行。
    非启动用的库文件一般放在/usr/lib目录下。
    *库的命名:所有的库文件都以lib开头;静态库以.a结尾;共享库以.so结尾。
    *在linux下开发主要用的是C语言,C语言的编译器最常用的是gcc。默认情况下,gcc在链接时优先使用共享库,只有共享库
    不存在时才考虑使用静态库。

  • umount失败解决方法
    问题:如下图所示,umount失败,提示busi

    解决方法:
    #:fuser -m /mnt/ 查看那个进程用到了/mnt目录,如下图所示,843为该进程的进程号

        #:ps -ef |grep 843  查看843进程的信息,可见843这个进程是bash
             
        #:kill -9 843   直接将843杀掉
        这时问题已经解决了。
    
  • ln :链接,分为硬链接和软链接
    硬链接:相当于复制了一份,但是,这两个文件是实时同步的。
    软链接:相当于windows下的快捷方式。
    ln 3.txt 4:创建一个文件4,并将其与文件3.txt创建硬连接。
    ln -s 3.txt 5:创建一个文件5,并将其指向文件3.txt,相当于快捷方式。
    注意:
    硬链接与复制的区别:复制得到的文件和硬链接得到的文件都是单独的一个文件,
    但是,硬链接的文件和原文件是实时同步的,原文件改变了,硬链接文件跟着
    改变;而复制得到的文件是不会随着源文件的改变而改变的。
    硬链接与软链接的区别:硬链接是复制了一份文件并使其与源文件保持实时同步;
    软链接则是创建了一个指向源文件的快捷方式。
    实验1:对比硬链接和复制的区别
    将3.txt复制一份6,然后改变3.txt的内容,观察4和6有何区别。
    实验2:对比硬链接和软连接的区别
    将3.txt删掉,试试4和5能否正常打开。结果4可以正常打开并显示了和3.txt一模一样的
    内容,而5则打不开,说找不到文件。

  • 格式化 && 挂载硬盘 && /etc/fstab
    ** 格式化命令mke2fs默认格式化为ext2格式,要想格式化为ext3格式,需加参数 -j。
    # mke2fs -jv /dev/sdb1 将磁盘/dev/sdb1格式化为ext3格式
    ** 将硬盘分好区并挂载之后,重启之后就得重新挂载。解决方法是在/etc/fstab文件中添加如下代码
    /dev/sdb1 /mnt/sdb1 ext3 defaults 1 2

    • *尤其注意,/etc/fstab文件中指定的挂载格式必须和格式化时的格式保持一致!
  • 查看所有硬盘
    用fdisk -l 命令查看系统挂载的设备列表。新添加的硬盘一般放在最后边

  • 查看硬盘或目录的总容量及挂载情况
    df:查看硬盘的总容量、已用容量、挂载点等信息。
    du:查看目录或文件已用容量。

例4:创建一个100M的空文件
dd if=/dev/zero of=hello.txt bs=100M count=1
/dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着!
/dev/zero,是一个输入设备,你可你用它来初始化文件。
/dev/null------它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。
/dev/zero------该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。
$ dd if=/dev/zero of=./test.txt bs=1k count=1
$ ls -l
total 4
-rw-r–r-- 1 oracle dba 1024 Jul 15 16:56 test.txt
eg:
$ find / -name access_log 2>/dev/null

  • 关闭不必要的启动项:chkconfig

  • 修改启动方式:修改/ect/inittab文件。

  • 开机自动运行:修改rc.local文件。

  • 修改主机名:/etc/hosts 和/etc/sysconfig/network 文件

          # /etc/sysconfig/network文件:主机名  (重启生效)
          NETWORKING=yes
          NETWORKING_IPV6=no
          HOSTNAME=myrhel  //改为你需要的主机名
          # /etc/hosts 文件:记录了主机名与IP地址的映射关系
          127.0.0.1  localhost.localdomain  localhost
          ::1   localhost6.localdomain6  localhost6
          192.168.137.129  myrhel.example.com  myrhel  // 加上这一行,注意主机名与network文件保一致
  • 安装好linux之后,根目录下有boot,bin,sbin,etc,usr/bin,等几个目录,
    boot下有vmlinuz这个文件,这个就是内核,就是目前世界上最厉害的黑客linus带头写的那个东东。
    /bin+/sbin :shell
    /etc :配置文件
    /usr/bin :一般应用程序

  • 安装程序及命令
    /sbin:目录下是root可以使用的命令,这些命令都是系统命令,安装好系统后就可以直接使用
    /usr/sbin:目录下也是root可以使用的命令,这些命令是后期用户自己安装的软件的命令。

  • linux管理开机启动项
    #chkconfig --list (root权限)
    列出了各个登录模式(1~6)的开机启动项,一般只关心3或5的即可。

  • 关于linux的时间
    *地球共有24个时区,以格林威治时间(GMT:Greenwich Mean Time)为标准时间。
    *中国使用时间为GMT+8小时。
    *linux系统有两个时间,一个是linux以1970-01-01开始计数的系统时间,另一个则是BIOS记载的硬件时间。
    *当linux开机后,它会主动读出BIOS时间,然后根据BIOS时间来设置系统时间。当我们使用date之类的命令来查询或修改
    时间时,该时间指的是linux的时间,并没有改变BIOS中记录的时间。除非您使用hwclock命令来写入或读取BIOS时间。
    *修改linux系统的时区
    linux所有的时区放置在了/usr/share/zoneinfo目录下(例如/usr/share/zoneinfo/Asia/Shanghai代表了上海时区),而代表
    linux当前时区的文件是/etc/localtime,注意一下几点
    #当/etc/localtime存在时,系统的时区以该文件的时区来显示。
    #当/etc/localtime不存在时,系统时区以GMT为准。
    所以,要想改变linux系统的时区,只要到/usr/share/zoneinfo目录下找到时区文件,另存为/etc/localtime就可以了。
    另外,建议修改一下/etc/sysconfig/clock文件中的ZONE值。
    *修改linux系统的时间(分两步:修改系统时间;将系统时间写入BIOS)
    如果只是修改了系统时间,而没有将修改后的系统时间写入BIOS的话,下次启动时系统会重新通过BIOS将时间读出来。
    修改linux系统时间:
    #date MMDDhhmmYYYY 修改linux系统的时间,例如date 010109042013 代表将时间修改为2013年1月1日9点4分
    查阅BIOS时间,并将linux当前系统时间写入BIOS中:
    #hwclock -r 查阅BIOS时间
    #hwclock -w 将linux当前系统时间写入BIOS中

  • linux下的swap分区
    问题:
    为什么linux下要有swap分区?
    可不可以取消swap分区?
    当物理内存较小时,为什么最好将swap分区设置为内存的两倍大小?
    解析:
    首先要知道VM(Virtual Memory)的概念。VM是由linux里面的vm子系统管理的东东。
    linux下VM的大小有RM(Real Memory)和swap组成。RM就是实际的物理内存,而Swap的大小是由你自己决定的。
    Swap是通过硬盘虚拟出来的内存空间,因此它的读写速度是没法和RM相提并论的。
    那为什么需要用swap呢?当一个进程申请一定数量的内存时,如果内核的vm子系统发现没有足够的物理内存(RM)可供分配时,就是把
    物理内存(RM)中的一些不常用的数据交换到Swap里面,如果需要重新使用这些数据时再把它们从Swap中交换到物理内存里面。由此可见,
    如果你有足够大的物理内存,根本不需要划分Swap分区;而如果物理内存非常小时,最好将Swap分区设置的大一些。

  • Device eth0 has different MAC address than expected, ignoring 错误。
    这是由于配置文件里的mac地址和真实的mac地址不一样导致的错误。
    含有mac地址的配置文件为:/etc/sysconfig/network-scripts/ifcfg-eth0
    查看实际mac地址的命令:ifconfig eth0
    将真实的mac地址修改到配置文件中即可。

  • device “eth0” does not seem to be present, delaying initialization 错误
    出现这个问题的原因是用VMware装完后,有把虚拟系统复制了几个。导致复制的系统网卡由eth0变成了eth1(或eth2、3、4等).
    解决方法:

        第一步:查看最新网卡名字
        # ifconfig -a  看其中列出的网卡名字和该网卡的mac地址,记下(例如eth1)
        第二步:修改网卡名字
        # cd /etc/sysconfig/network-scripts
        # mv ifcfg-eth0 ifcfg-eth1
        第三步:修改网卡配置文件
        # vi ifcfg-eth0
        修改其DEVICE和HWADDR。
  • bash:command not found 找不到所执行的命令
    可能原因1:没有足够的权限;例如普通用户无法执行ifconfig命令,此时可以尝试/sbin/ifconfig。
    可能原因2:$PATH中没有添加该命令所在目录;
  • 重启network服务时报错:Connection activation failed Device not managed by NetworkManager
    这是由于NetworkManager管理了无线网卡导致,解决方案就是把NetworkManager关掉并禁止自动启动。
      # chkconfig NetworkManager off
      # servers NetworkManager  stop
      # service network restart
  • 关于格式化和mount时的文件系统格式
    我为虚拟机分配新的硬盘之后,分好区然后用mke2fs命令格式化:
    # mke2fs /dev/sdb1
    用mount命令挂载:
    # mount /dev/sdb1 /mnt/sdb1/
    此时,/mnt/sdb1目录已经挂载成功,可以正常访问。
    然后修改/etc/fstab文件,添加下面一行:
    /dev/sdb1 /mnt/sdb1 ext3 defaults 1 2
    结果重启之后,/mnt/sdb1目录的挂载失效了!!

    这时已经猜到是文件系统的问题,我在/etc/fstab文件中写的是ext3,会不会挂载的时候不是ext3呢?
    重新挂载之后,用mount命令查看挂载情况,果然,文件系统是ext2

    这好办,mount不是有参数的吗?直接挂载成ext3就是了。man mount 知道 -t参数可以指定挂载格式,那就来吧
    # mount -t ext3 /dev/sdb1 /mnt/sdb1/
    结果报错了居然,说wrong fs type!如下:

    难道是参数-t的问题?继续尝试
    # mount -t ext2 /dev/sdb1 /mnt/sdb1/
    成功了!问题终于出来了,既然mount没问题、/etc/fstab文件没问题,那么问题肯定出在mke2fs命令上!
    man mke2fs,果然发现问题。mke2fs默认格式化为ext2格式,要想格式化为ext3,需要加参数-j。
    # mke2fs -jv /dev/sdb1
    # mount /dev/sdb1 /mnt/sdb1/
    此时mount查看挂载结果,显示挂载成了ext3格式,保持/etc/fstab原来的配置不变,重启之后发现,/dev/sdb1已经自动挂载!

  • 解决This system is not registered with RHN
    我们在redhat中使用yum命令的时候,可能会遇到这种情况,提示This system is not registered with RHN,然后yum安装失败。
    之所以会出现这个错误是因为没有注册RHN,我们只需要更新一下yum的源就可以了。
    $ cd /etc/yum.repos.d/ 进入yum的配置目录。
    $ wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo 下载CentOS- Base.repo文件。
    然后将原有的rhel-debuginfo.repo备份一下,使用命令mv CentOS-Base.repo rhel-debuginfo.repo,将CentOS- Base.repo重命名成rhel-debuginfo.repo。
    成功以后,使用yum install build-essential安装成功。

============================================
linux支持的文件格式和文件种类

  • 文件格式
    linux支持的文件格式默认为ext3,向下兼容ext2。
    问题:如何查看已安装的linux版本支持的文件格式?
    方法:到/lib/modules/2.6.18-164.el5/kernel/fs目录下查看,如果有你想要的格式,那么这个核心就支持它。
    备注:目录中加颜色部分不确定,modules目录下只有一个子目录,根据系统不同而名称不同。
  • 文件种类
    使用ls -l 命令显示结果的第一个属性可以该文件的种类。
    *正规文件。第一个属性为【-】的文件。
    纯文本文件(ASCII):大多数文件都是纯文本文件。
    二进制文件(binary):通常除了脚本文件,可执行文件都是这种格式。
    *目录文件(directory):第一个属性为【d】
    *链接文件(link):类似windows下的快捷方式。第一个属性为【l】
    *设备文件(device):与系统外设相关的文件,通常几种在/dev目录下。分为两种:
    块设备文件(block):简单来说就是硬盘,例如您的主硬盘代码是/dev/hda1。第一个属性为【b】
    字符设备文件(character):一些串行端口的接口设备,例如键盘、鼠标等。第一个属性为【c】

===================================

  • 设置tmpfs,即系统的临时文件目录/tmp——见附件【Linux下面的tmpfs文件系统_2.html】
    原则上,当系统临时空间(及tmpfs)不够用时,可以通过删除/tmp目录下的内容来解决。
    [注意]设置tmpfs的前提是物理内存足够大。
    tmpfs的详细信息参考如下附件,这里只强调几点。
    *tmpfs相当于从内存中提取的一部分空间,因此一旦机器重启,tmpfs的内容将被清空,但是它的速度要大大快于硬盘。
    *tmpfs的容量大小也是随着实际的存储容量的变化而变化的。
    例如将tmpfs挂载在/tmp目录下,并分配上限为20m。那么加入/tmp目录下什么都没有,此时tmpfs并不占用空间,20M只是告诉
    内核这个挂载点的最大可用空间为20M。
    [用途]由于断电或者卸载之后,tmpfs内的数据就会丢失,因此tmpfs不能用于存放重要文件,而只能存放临时文件。
    所以它最大的用途就是挂载在系统的临时目录上(比如/tmp目录)以提高系统效率。
    [用法]
    为/tmp目录分配最大200M的tmpfs空间
    #mount -t tmpfs -o size=200m tmpfs /tmp
    由于没挂载之前/tmp目录下的文件可能正在被使用,所以挂载之后,在/etc/fstab文件中添加下面这句,重启即可。
    tmpfs /tmp tmpfs size=200m 0 0

===========================================================

VmWare 下的linux

  • VMware中linux切换用户。
    问题:linux中切换用户的快捷键是ctrl+alt+F1~F7,但是VMware下ctrl+alt之后会跳出VMware。
    解决:VMWare设置中按下ctrl+alt+空格 后,相当于在VMWare内部按下了ctrl+alt。
    所以在VMWare中切换用户的方法是ctrl+alt,然后敲一下空格键(不能松开ctrl+alt键),在按F1~F7
  • 用户界面和字符界面的切换
    首先:最好的习惯是通过修改/etc/inittab文件,令linux系统的默认运行等级为3,即从字符界面启动。
    X-Window只是运行在linux系统上的一个软件,直接图形登录到系统可能会遇到各种各样的问题。
    切换:在命令行模式下,使用startx启动图形界面,用ctrl+alt+backspace退出图形界面。
    注意是退出图形界面而不是用ctrl+alt+F2切换到字符终端。
  • 几个快捷键
    Ctrl+Alt+Backspace:杀死图形化桌面,返回到登录屏幕。
    Ctrl+Alt+Delete:强制重启 Red Hat Linux,只有在正常关机步骤不起作用时才使用这种方法。
    Ctrl+Alt+Fn:切换屏幕。F1~F6 是 shell 提示屏幕,F7是图形化屏幕。
    Alt+Tab:在图形化桌面环境中切换任务(同Windows系统)。
  • 安装VmWareTools
    挂载映像文件,将VMwareTools-8.4.6-385536.tar.gz拷贝至其他目录并解压。
    进入解压后的目录,用root执行vmware-install.pl文件。
    安装过程中全部选则默认选项,安装完成。
    安装过程中的提示信息如下,这些信息包含了安装路径、配置文件等等信息。

=============================================================================

=============================================================================

桌面使用

  • 解决linux下中文乱码问题
    安装以下两个中文支持包(安装完成后需要重启生效):
    fonts-chinese-3.02-12.el5.noarch.rpm :中文字体包
    fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm:中文显示包
    修改配置文件 /etc/sysconfig/i18n,解决ssh、telnet等终端的中文乱码问题(修改完成后需要重新登录生效)

    LANG="en_US.UTF-8"
    SYSFONT="latarcyrheb-sun16"
    修改为
    LANG="zh_CN.GB18030"
    LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
    SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"
    SYSFONT="lat0-sun16"
    重新登录系统后,会发现所有界面的文字都从英文变成了中文。
  • 安装中文输入法
    方法之一是安装企鹅版的输入法。也可以直接安装光盘里自带的中文输入法:scim-pinyin-0.5.91-16.el5i386.rpm
    注意:
    直接安装scim-pinyin-0.5.91-16.el5i386.rpm时会提示需要安装其它几个软件。但是那几个软件在光盘里没有。
    解决方法:按照如下顺序依次安装光盘中的软件即可。
    1.scim-libs-1.4.4-39.el5.i386.rpm
    2.scim-1.4.4-39.el5.i386.rpm
    3.scim-chinese-standard-0.0.2-1.el5.i386.rpm
    4.scim-tables-0.5.6-7.i386.rpm
    5.scim-tables-chinese-0.5.6-7.i386.rpm
    6.scim-pinyin-0.5.91-16.el5.i386.rpm

==========================================================================================

=============================================================

工作常用软件的安装

  • 安装JDK
    注意:安装之前先要看看系统是不是默认安装了jdk,如果安装的版本不满足需要则将其卸载后重新安装。
    1)查看已安装的版本:# java -version
    2)环境变量设置(假设安装目录为/usr/java/jdk1.6.0_32)
    #vi /etc/profile 添加以下信息
         export JAVA_HOME=/usr/java/jdk1.6.0_32
         export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
         export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
  #source /etc/profile  使刚刚设置的环境变量生效
  #java -version 检查环境变量是否生效,如果正确显示了java版本信息,则设置成功。
  • 安装Mysql
    1)下载rpm包直接安装即可
    2)启动与关闭
    #service mysql status:查看是否已经启动
    #service mysql start :启动mysql的服务
    #service mysql stop :关闭mysql的服务
  • 安装Tomcat
    1)Tomcat是绿色软件,下载后直接解压就能用
    2)启动与关闭
    #startup.sh
    #catalina.sh (推荐)
    #catalina.sh debug 用debug模式启动

========================================================================================

解决SSH、SCP等待时间很长的问题

  • 第一步:修改/etc/ssh/sshd_config文件,增加或修改为以下配置
# 不使用DNS反查。当ssh某个IP时,系统会试图通过DNS反查相对应的域名,如果DNS中没有这个IP的域名解析,则会等到DNS查询超时才会进行下一步,消耗很长时间。
UseDNS no
# 该参数似乎是在做图形方面的认证,关闭后可以明显提高ssh远程登录的速度
GSSAPIAuthentication no
  • 第二步:重启ssh
    service sshd restart
  • 如果仍未解决,则检查/etc/hosts文件
    /etc/hosts文件中,127.0.0.1对应的主机名是否和 uname -n的结果一样,或者把本机ip和hostname(uname -n结果)加入到/etc/hosts里
[root@C64 ~]# uname -n
C64
[root@C64 ~]# cat /etc/hosts
#modi by oldboy 11:12 2013/9/24
127.0.0.1  C64 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.18  C64
################
  • 备注:利用ssh -v的调试功能查找慢的原因
# 下面的例子在gssapi这里卡住,就大概知道是gssapi的问题了
[root@C64_A ~]# ssh -v oldboy@10.0.0.17
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1:  ... 省略n行 ...
debug1: No valid Key exchange context
debug1: Next authentication method: gssapi-with-mic

=================================================================================

linux关键文件

/etc/fatab:定义挂载点(新增分区后需要修改该文件来达到开机自动挂载的目的)
/etc/inittab:设置启动模式(3代表纯字符模式;5代表图形界面模式)
/etc/sysconfig/network-scripts

1、/etc/inittab:系统启动控制

Default runlevel. The runlevels used by RHS are:

0 - halt (Do NOT set initdefault to this)

1 - Single user mode

2 - Multiuser, without NFS (The same as 3, if you do not have networking)

3 - Full multiuser mode

4 - unused

5 - X11

6 - reboot (Do NOT set initdefault to this)

id:3:initdefault:
主要作用:修改系统启动状态,字符界面or图形界面
2、/etc/passwd:存储的操作系统的用户信息,对所有用户可见
root❌0:0:root:/root:/bin/bash
bin❌1:1:bin:/bin:/sbin/nologin

sabayon❌86:86:Sabayon user:/home/sabayon:/sbin/nologin
kxsh❌500:500:kxsh:/home/kxsh:/bin/bash
testuser❌501:501::/home/testuser:/bin/bash
最后两个是我们自己创建的用户,其余都是系统默认用户。
每一行数据都是由6个:(冒号)组成的7个信息。以testuser为例解释如下:
(1)用户名:testuser
(2)口令:x表示已经加密
(3)UID,用户ID:501
(4)GID,组ID:501
(5)用户全名或本地账号:空
(6)开始目录:/home/testuser
(7)登录使用的shell,就是对登录命令进行解析的工具:bash

=================================================================================

目录
  • bin:binaries(二进制文件 )
  • dev devices 设备
  • etc ETCetera 附加的人, 附加物
  • lib LIBrary 库
  • var VARiable 变化,就是保存一些变化的数据
  • proc PROCesses 进程
  • sbin Superuser BINaries 超级二进制文件
  • tmp TeMPorary 临时
  • usr Unix Shared Resources Unix 的共享资
命令选项
  • -a
    all : 全部,所有 (ls , lsattr , uname)
    archive : 存档 (cp , rsync)
    append : 附加 (tar -A , 7z)
  • -b
    blocksize : 块大小,带参数 (du , df)
    batch : 批处理模式 (交互模式的程序通常拥有此选项,如 top -b)
  • -c
    commands : 执行命令,带参数 (bash , ksh , python)
    create : 创建 (tar)
  • -d
    debug : 调试
    delete : 删除
    directory : 目录 (ls)
  • -e
    execute : 执行,带参数 (xterm , perl)
    edit : 编辑
    exclude : 排除
  • -f
    force : 强制,不经确认(cp , rm ,mv)
    file : 文件,带参数 (tar)
    configuration file : 指定配置文件(有些守护进程拥有此选项,如 ssh , lighttpd)
  • -g
  • -h
    –help : 帮助
    human readable : 人性化显示(ls , du , df)
    headers : 头部
  • -H
    (与h类似, but use powers of 1000 not 1024)
  • -i
    interactive : 交互模式,提示(rm , mv)
    include : 包含
  • -k
    keep : 保留
    kill
  • -l
    long listing format : 长格式(ls)
    list : 列表
    load : 读取 (gcc , emacs)
  • -m
    message : 消息 (cvs)
    manual : 手册 (whereis)
    create home : 创建 home 目录 (usermod , useradd)
  • -n
    number : 行号、编号 (cat , head , tail , pstree , lspci)
    no : (useradd , make)
  • -o
    output : 输出 (cc , sort)
    options : 选项 (mount)
  • -p
    port : 端口,带参数 (很多网络工具拥有此选项,如 ssh , lftp )
    protocol : 协议,带参数
    passwd : 密码,带参数
  • -q
    quiet : 静默
  • -r
    reverse : 反转
    recursive : 递归 (cp , rm , chmod -R)
  • -s
    silent : 安静
    size : 大小,带参数
    subject
  • -t
    tag
    type : 类型 (mount)
  • -u
    user : 用户名、UID,带参数
  • -v
    verbose : 冗长(用于查看详细信息)
    version : 版本
  • -w
    width : 宽度
    warning : 警告
  • -x
    exclude : 排除 (tar , zip)
  • -y
    yes
  • -z
    zip : 启用压缩 (bzip , tar , zcat , zip , cvs)

linux分区的命名

  • 注意:
    现在的硬盘主要有两种:IDE硬盘和SCSI硬盘。
    在linux的/dev目录下,IDE硬盘用hd表示,SCSI硬盘用sd表示。
    所以,新挂载的硬盘,要去/dev目录下找,根据硬盘类型找,而不要盲目的只找hd。
  • 在linux下,所有的东西都是文件,不管是硬盘、鼠标、打印机等,都是文件。
  • linux下的文件有两种形式:字符形式;二进制形式。
    例如:键盘、打印机等都是字符形式的文件;硬盘、光驱等都是二进制形式的文件。
    注意:如何查看二进制形式的文件??
    直接用more会看到一堆乱码,可以用hexdump命令查看其十六进制内容。
    $hexdump -C filename
  • linux分区的命名——/dev/xxyN
    /dev/:这是所有设备文件所在目录名
    xx:前两个字母表示所在设备的类型。如hd代表IDE磁盘、sd代表SCSI磁盘等
    y:这个字母表名分区所在的设备。例如,/dev/hda表示第一个IDE磁盘、/dev/sdb表示第二个SCSI磁盘
    N:最后的数字代表分区。1~4代表主分区或扩展分区;逻辑分区永远从5开始。
    举例:
    /dev/hda3:第一个IDE磁盘上的第三个主分区或扩展分区
    /dev/sdb6:第二个SCSI磁盘上的第二个逻辑分区
  • linux安装时分区
    最简单的分区模式:Linux安装的过程中,至少要有两个分区才行,一个是根目录
    “/”,另一个则是虚拟内存“Swap”,如果您的硬盘很小(例如小于1GB),那
    么使用这个分区方法会比较好。
    稍微麻烦一点的方式:在默认情况下,由于Linux操作系统都是放在/usr/中,所以,
    您可以将这一部分划分得大一点,另外,由于用户的信息都是放在/home下,因此
    这个也可以大一些,而/var下是记录所有默认服务器的登录文件,且mail与WWW
    的默认路径也在/var下,因此这个空间也可以加大一些。所以,需要的目录就有:
    / :根分区
    /usr :操作系统、应用软件的存放位置(unix shared resource:unix的共享资源)
    /home :用户信息存放目录
    /var :临时文件
    Swap :交换分区,其实就是虚拟内存,一般设置成物理内存的两倍即可。

挂载

1、引言
linux中所有的硬件设备都是以文件的形式存放的。这就有个问题,假如我想访问关盘的内容,那么如何访问呢?

 由上图可见,直接访问是不行的,因为cdrom是文件而不是目录。这时就用到了挂载的概念。

2、解决问题
我们可以把这个设备假设成一个目录,然后就可以访问这个目录了。这个假设的过程就是挂载。
/mnt:一般情况下,挂载目录放在/mnt下。
3、挂载的过程
注意:我们以挂载光驱为例,前提是光驱中插入了光盘,如果没有光盘,会挂载出错的。

 关键命令:
 #mount: 查看挂载状态
 #mount | grep cd :查看cd的挂载
 #mount /dev/cdrom /mnt/cdr:将文件/dev/cdrom挂载为目录/mnt/cdr。
 #umount  /dev/cdrom:取消挂载

4、问题及解决方法
问题1:mount挂载失败,提示如下

 原因:磁盘分区后没有执行格式化操作
 解决方法:格式化磁盘
 问题2:如下图所示,umount失败,提示busi
      
 解决方法:
      #:fuser -m /mnt/   查看那个进程用到了/mnt目录,如下图所示,843为该进程的进程号
      
      #:ps -ef |grep 843  查看843进程的信息,可见843这个进程是bash
      
      #:kill -9 843   直接将843杀掉
      这时问题已经解决了。

RPM包管理

RPM:Redhat Package Management RPM包管理
从名字可以看出,这个命令是Redhat发明的。
首先,rpm格式的文件可以在linux下直接安装;
其次,在linux上装过了那些东西,用rpm命令也可查出来。

1、起源
最开始的linux上没有rpm这个东西,那么安装、卸载程序都是一件特别麻烦的事情,安装软件的时候需要在好多个不同的
目录下做设置,甚至需要自己写脚本,管理员还要把程序安装的目录记下来,以免将来卸载的时候记不起来了。
后来,人们想了各种各样的在linux下装软件的方式,rpm是其中之一。rpm非常好用,类似于windows下的添加删除程
序的功能。
rpm出来之后,非常流行,现在大多数的软件都提供了rpm格式的安装包。
2、rpm 最长用的参数
#rpm -qa | grep jdk 查看是否安装了jdk
#rpm -e jdk-1.6.0_32-fcs 卸载已经安装了的jdk(这里的名字是安装的package的名字)
#rpm -ivh *.rpm 安装rpm文件
3、安装时可能遇到的问题及解决方法
问题一:

      没有权限:不能在/var/lib/rpm下创建事务(transaction:事务)。
      查看/var/lib/rpm/ 目录得知,该目录下的文件除root外均没有写权限。
      解决方法:用root用户安装。

4、rpm安装时出现冲突或依赖关系的解决办法
在rpm安装软件时,如果缺少依赖的安装包会报错,在rpm -ivh 最后加上–force --nodeps来忽略软件包及文件的冲突,不验证套件的依赖性

5、一个复杂的安装举例:rhel下安装gcc编译器
直接执行rpm -ivh gcc-4.1.2-46.el5.i386.rpm,提示信息如下:

 可见,要安装gcc,需要先安装glibc-devel和libgomp。
 执行rpm -ivh libgomp-4.4.0-6.el5.i386.rpm  安装成功
 执行rpm -ivh glibc-devel-2.5-42.i386.rpm  安装失败,提示信息如下
 
 可见,要安装glibc-devel,需要先安装glibc-headers
 执行rpm -ivh glibc-headers-2.5-42.i386.rpm又安装失败,提示信息如下
 
 可见,要安装glibc-header,需要先安装kernel-headers

rpm -ivh kernel-headers-2.6.18-164.el5.i386.rpm
rpm -ivh glibc-headers-2.5-42.i386.rpm

命令总结 - chkconfig

【功能】
chkconfig主要用来检查、设定系统的各种服务。例如增加一个服务、修改服务的开机启动状态等
chkconfig命令通过维护/etc/rc.d目录下rc[0~6].d文件夹中的符号连接来实现。
chkconfig命令是redhat公司开发的程序。
【注意】
简单的说,chkconfig就是修改服务的开机启动状态,而不会对服务现在的运行状态产生改变。
*用chkconfig命令启动或停止一项服务,并不会立刻生效,它只是改变了/etc/rc.d/rc[0~6].d目录下的一些符号链接,
在下次启动时才会看到效果。
*如果想立刻启动或停止某个服务,应该用service命令。
#service iptables status
#service iptables start
#service iptables stop
#service iptables restart
【应用】
#chkconfig --list :列出所有的系统服务
#chkconfig --list mysqld:列出mysqld服务设置情况

   #chkconfig --add httpd :增加httpd服务
   #chkconfig --del httpd:删除httpd服务

   #chkconfig iptables on:在当前登录等级下启动防火墙服务
   #chkconfig iptables off:在当前登陆等级下不启动防火墙服务

   #chkconfig --level 35 mysqld on:设定mysqld在等级3和5为开机运行服务

【拓展】
如何增加一个服务:
1.服务脚本必须存放在/etc/ini.d/目录下;
2.chkconfig --add servicename
在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;
3.chkconfig --level 35 mysqld on
修改服务的默认启动等级,在3和5等级下自动启动。

【背景】
linux操作系统的7个执行等级,即/etc/inittab文件中规定的7中启动方式。
0:停机(千万不能切换到这个等级)
1:单人使用者模式的文字界面
2:多人使用者模式的文字界面,不具有网络档案系统(NFS)功能
3:多人使用者模式的文字界面,具有网络档案系统(NFS)功能(最常用)
4:某些发行版的linux使用此等级进入x windows system
5:某些发行版的linux使用此等级进入x windows system
6:重新启动

##################

占用内存的测量
测量一个进程占用了多少内存,linux为我们提供了一个很方便的方法,/proc目录为我们提供了所有的信息,实际上top等工具也通过这里来获取相应的信息。
/proc/meminfo 机器的内存使用信息
/proc/pid/maps pid为进程号,显示当前进程所占用的虚拟地址。
/proc/pid/statm 进程所占用的内存
[root@localhost ~]# cat /proc/self/statm

######################
1、uname:print system information
获取系统信息:内核名称、内核版本、CPU架构等等
1、系统管理必须掌握的几个个目录
/proc:当前系统的所有详细信息,这里边的“文件”并不存在于硬盘中,而是在内存或缓存里,每次启动后都不一样。例如
/proc/cpuinfo :查看cpu信息
/proc/ioports : 输入输出信息
/proc/uptime :系统运行时间
/proc/version :系统信息
/proc/scsi :查看scsi
/proc/ide :查看ide信息
/proc/sys :查看核心系统参数
/usr/log :存放系统日志。例如
/usr/log/maillog:查看邮件日志
/usr/log/dmesg:查看核心启动日志。dmesg命令显示的就是这个文件的内容。
/usr/log/messages:查看系统报错日志
/usr/log/wtmp:查看登录日志
/usr/log/xferlog:查看ftp日志,用于记录ftp服务信息
/usr/log/secure:记录与系统相关的信息
/usr/log/rpmpkgs:查看已经安装了的rpm。rpm -qa命令显示的就是这个文件的内容。
/sys:系统的核心文件,类似/proc
1、电源管理:apm
$apm :查看电源信息
$apm -m:查看电源剩余可使用时间
2、将程序放在后台执行:bg ??? &
将后台的指令拉到前台:fg

 xxsh目前理解:
      在命令最后加上&后,该命令就会在后台执行,此时仍可输入其他命令并执行,但是后台程序的输出信息仍会频繁的打印,导致操作及其不方便。
      可以使用fg命令呼出后台进程。

3、查看当前系统的体系结构:arch
4、查找并显示用户信息:finger
5、设置finger信息:chfn
6、查看可用的shell:chsh -l
7、改变当前shell:chsh 或chsh -s
8、显示操作系统详细信息:uname -a
9、显示主机名称:hostname
主机名保存位置:/etc/sysconfig/network
修改主机名:vi /etc/sysconfig/network
10、查看虚拟终端的数目:fgconsole (好像只有root能用)
11、显示内存信息:free
以总和的消息显示内存信息:free -t
每4秒钟显示一次内存信息:free -s 4
12、显示信号:fuser -l
杀死与root相关的进程:fuser -k /root

1、date:显示和设置日期时间
2、cal:显示日历
cal 1 2012:查看2012年1月的日历
cal 2012:查看2012年的日历
3、stat:显示指定文件的相关信息
4、who、w:现在当前在线的用户
5、whoami:显示用户自己的身份
6、id:显示当前用户的ID信息
7、hostname:显示主机名称
8、uname:显示操作系统信息
9、dmesg:显示系统启动信息
10、du:显示指定的文件(或目录)已经使用的磁盘空间的总量
11、df:显示文件系统磁盘空间的使用情况
12、free:显示当前内存和交换空间的使用情况
13、fdisk -l:显示磁盘信息
14、locale:显示当前语言环境

2、使用常用命令配置网络
ifconfig、ping、netstat、route、tcpdump等
3、熟悉网络配置文件的内容并说明其作用及含义
/etc/sysconfig/network文件
/etc/hosts文件
/etc/host.conf与/etc/nsswitch.conf文件
/etc/hosts.allow与/etc/hosts.deny文件
/etc/services文件
/etc/resolv.conf文件
/etc/rc.d/init.d/network文件

linux screen 命令,非常强大的命令

hda1, hdc5
hd表示使用PATA接口的硬盘,a、c表示第1和第3个分区

sda2
sd表示使用SCSI或SATA或USB接口的硬盘,a和数字编号意义同上

SCSI和SATA是较PATA新的接口设计读取速度和性能都好很多。USB接口则有很高的通用性。你要检查你的硬盘并使用适当的驱动从而达到理想的读取效果

在linux下有一套得心应手的工具是非常必要的。一些基本工具如sed, grep, find, locate, awk, w, fuser, ps, top, watch, whatis等这些工具都要熟练掌握。如shell编程等一些脚本语言能让你事半功倍。强大的编辑器vi和emacs,学习它们绝对是物超所值。

Linux的常用命令find,察看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会就爱不释手.它的功能实在太强了,在配合exec参数或者通过管道重定向到xargs命令和grep命令,可以完成非常复杂的操作,如果同样的操作用图形界面的工具来完成,恐怕要多花十几陪的时间. 不同版本的Linux命令数量不一样,这里笔者把它们中比较重要的和使用频率最多的命令,按照它们在系统中的作用分成几个部分介绍给大家,通过这些基础命令的学习我们可以进一步理解Linux系统:
安装和登录命令:login、 shutdown、 halt、 reboot 、mount、umount 、chsh
文件处理命令:file、 mkdir、 grep、dd、 find、 mv 、ls 、diff、 cat、 ln
系统管理相关命令: df、 top、 free、 quota 、at、 lp、 adduser、 groupadd kill、 crontab、 tar、 unzip、 gunzip 、last
网络操作命令:ifconfig、 ip 、ping 、 netstat 、telnet、 ftp、 route、 rlogin rcp 、finger 、mail 、nslookup
系统安全相关命令: passwd 、su、 umask 、chgrp、 chmod、chown、chattr、sudo、 pswho

  1. 最常用的命令列表
    下面列出十个在使用linux过程中使用频率最高的命令。
    cat,显示文件内容。
    cd,改变目录路径。
    cp,复制文件。
    find,查找文件。
    grep,搜索、过滤信息。
    ls,列出目录信息。
    more,分页显示。
    rm,删除文件或目录。
    vi,调用vi文本编辑器。
    who,显示登录用户信息。

  2. chmod----改变一个或多个文件的存取模式(mode)
    chmod [options] mode files

只能文件属主或特权用户才能使用该功能来改变文件存取模式。mode可以是数字形式或以who opcode permission形式表示。who是可选的,默认是a(所有用户)。只能选择一个opcode(操作码)。可指定多个mode,以逗号分开。

 options:
  -c,--changes 只输出被改变文件的信息
  -f,--silent,--quiet 当chmod不能改变文件模式时,不通知文件的用户
  --help 输出帮助信息。
  -R,--recursive 可递归遍历子目录,把修改应到目录下所有文件和子目录
  --reference=filename 参照filename的权限来设置权限
  -v,--verbose 无论修改是否成功,输出每个文件的信息
  --version 输出版本信息。

 who
  u 用户
  g 组
  o 其它
  a 所有用户(默认)

 opcode

 + 增加权限
  - 删除权限
  = 重新分配权限

 permission

 r 读
  w 写
  x 执行
  s 设置用户(或组)的ID号
  t 设置粘着位(sticky bit),防止文件或目录被非属主删除
  u 用户的当前权限
  g 组的当前权限
  o 其他用户的当前权限

 作为选择,我们多数用三位八进制数字的形式来表示权限,第一位指定属主的权限,第二位指定组权限,第三位指定其他用户的权限,每位通过4(读)、2(写)、1(执行)三种数值的和来确定权限。如6(4+2)代表有读写权,7(4+2+1)有读、写和执行的权限。
  还可设置第四位,它位于三位权限序列的前面,第四位数字取值是4,2,1,代表意思如下:
      4,执行时设置用户ID,用于授权给基于文件属主的进程,而不是给创建此进程的用户。
      2,执行时设置用户组ID,用于授权给基于文件所在组的进程,而不是基于创建此进程的用户。
      1,设置粘着位。

 实例:
  $ chmod u+x file 给file的属主增加执行权限
  $ chmod 751 file 给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
  $ chmod u=rwx,g=rx,o=x file 上例的另一种形式
  $ chmod =r file 为所有用户分配读权限
  $ chmod 444 file 同上例
  $ chmod a-wx,a+r 同上例
  $ chmod -R u+r directory 递归地给directory目录下所有文件和子目录的属主分配读的权限
  $ chmod 4755 设置用ID,给属主分配读、写和执行权限,给组和其他用户分配读、执行的权限。
  1. chgrp----修改文件或目录的所属组
    chgrp [options] newgroup files/directorys

组名可以用组的ID号,也可用/etc/group中的组名。只有文件的属主或特权用户(root)才可改变它的组。

 options:

 -c,--changes 只输出被改变文件的信息
  -f,--silent,--quiet 当不能改变文件组属性时,不通知文件的用户
  --help 输出帮助信息。
  -R,--recursive 可递归遍历子目录,把修改应到目录下所有文件和子目录
  --reference=filename 参照filename的组信息来设置当前文件的组
  -v,--verbose 输出详细信息
  --version 输出版本信息。

 实例:
  $ chgrp root test 把test的所属组更改root组
  $ chgrp -R root test 递归地把test目录及该目录下所有文件和子目录的组属性设置成root
  $ chgrp root * 把当前目录中所有文件的组属性设置成root
  1. chown----设置一个或多个文件或目录的属主身份
    chown [options] newowner files/directorys

新的属主可以是用户的ID号,也可以是/etc/passwd里的登录名。chown也可接受这样的形式:newowner:newgroup或newowner.newgroup。同时改变所属组的属性。如果句点和冒号后没有组名,则组改变为新属主的组。只有文件或目录的当前属主才有权改变它的属性。

 options:

 -c,--changes 只输出被改变文件的信息
  --dereference 跟踪符号链接
  -h,--no-dereference 改变每一个符号链的属主身份,而不是被引用文件的属主身份
  -f,--silent,--quiet 当不能改变文件属主属性时,不通知文件的用户
  --help 输出帮助信息。
  -R,--recursive 可递归遍历子目录,把修改应到目录下所有文件和子目录
  --reference=filename 把属主改变成filename文件的属主
  -v,--verbose 输出详细信息
  --version 输出版本信息。

 实例:
  $ chown root test 把test文件的属主改进root
  $ chown -R root test_directory 递归地把test_directory目录下的所有文件属主改成root
  $ chown --dereference root test_link 把test_link链接的原文件属主改成root,链接文件属主不变
  $ chown --no-dereference root test_link 把test_link的链接文件属主改成root,原文件属主不变
  1. date----显示、修改系统时间
    date [options][+format][date]

$ date -s 06/09/2004 修改日期(按月日年格式)
$ date -s 13:56:00 修改时间(按时分秒格式)
$ date -r test 显示test文件最后一次的修改时间
$ date +‘%Y-%m-%d’ 以yyyy-mm-dd格式显示日期,其它格式请参考帮助
$ clock -r 查询BIOS时间
$ clock -w 把修改后的时间写回BIOS

  1. df-----显示已安装文件系统的磁盘容量状态
    df [options][name]

$ df -h 以友好的格式输出所有已安装文件系统的磁盘容量状态
$ df -m /home 以M为单位输出home目录的磁盘容量状态
$ df -k 以K为单位输出所有已安装文件系统的磁盘容量状态
$ df -i 报告空闲的、用过的或部份用过的(百份比)索引节点
$ df -t ext3 仅显示文件类型为ext3的文件系统的磁盘状态
$ df -x ext3 仅显示文件类型不为ext3的文件系统的磁盘状态
$ df -T 除显示文件系统磁盘容量大小外还显示文件系统类型
$ df -l 仅显示本地文件系统。

  1. fdisk----分区表查询工具
    fdisk [options][driver]
    $ fdisk -l 列出所有分区信息

  2. hdparm----硬盘管理
    hdparm [options][driver]

$ hdparm -d /dev/hda 显示硬盘的DMA模式是不打开,1代表on
$ hdparm -tT /dev/hda 测试硬盘的写性能
$ hdparm -d1 /dev/hda 开启dma功能
$ hdparm -d1 -X68 -c3 -m16 /dev/hda
选项说明:
-c3:把硬盘的IO模式从16位转成32位。
-m16:改变硬盘的多路扇区的读功能,-m16使硬盘在一次I/O中断中读入16个扇区的数据。
-d1:打开DMA模式。
-X68:支持ATA66的数据传输模式。下面是其它模式的设置对照
ATA33…参数是-X66
ATA66…参数是-X68
ATA100…参数是-X69
$ hdparm -k1 /dev/hda 保存设置

  1. ln-----为文件建立别名
    ln [options] sourcename [destname]
    ln [options] sourcenames destdirectory

$ ln -s file1 file2 建立一个到file1的符号链接file2,删除file2不会影响file1
$ ln -s -f file1 file2 建立一个到file1的符号链接file2,并不提示是否重写

  1. shutdown-----终止所有进程序,关闭计算机。
    shutdown [options] when [message]

用when可以是指定的关机时间(以hh:mm格式)、关机前要等待的时间(以+m格式)、或者now。message指定一条广播消息通知所有用户退出系统。showdown给所有进程发送SIGTERM信号,并调用init 1执行实际的关机动作。

$ shutdown -c 取消正在进行的关闭操作
$ shutdown -f 快速重新启动,在重新启动时禁止对fsck的常规调用
$ shutdown -h 当关闭完成时停止系统
$ shutdown -k 输出警告信息,但禁止实际的关闭
$ shutdown -n 不调用init就执行关闭
$ shutdown -r 当关闭完成时重新启动系统
$ shutdown -t 5 在杀死进程和改变运行级别之间确保延时5秒

  1. sleep-----执行另一个命令之前等待的时间
    sleep amount [units]
    units默认为秒(s),m表示分钟,h表示小时,d表示天。

  2. swapon/swapoff-----启动和关闭交换分区
    swapon/swapoff [options] device

$ swapon -s 显示交换分区信息
$ swapon -a 激活所有在/etc/fstab中有sw标记的分区
$ swapon -p 1 设置交换分区优先级为1

  1. tune2fs-----调整Linux第二扩展文件系统的参数
    tune2fs [options] device

$ tune2fs -l /dev/hda1 显示hda1分区的超级块内容
$ tune2fs -c 100 /dev/hda1 设置hda1分区每mount100次就进行磁盘检查

  1. uniq----过滤、统计、删除重复行
    uniq [options][file1 [files]]

$ uniq -c file file中的重复行输出一次,并在每行前显示重复次数
$ uniq -d file file中的重复行输出一次,但不输出唯一的行
$ uniq -u file 只输出file中的唯一行
$ uniq file1 file2 把file1中的重复的相邻行删除,并把每行的一个拷贝送到file2

  1. wc-----输出每个文件中的字符数、单词数及行数。
    wc [options][files]

$ wc -l file 输出file中的行数
$ wc -w file 输出file中的单词数
$ wc -c file 输出file中的字符数

增加一个用户ccne并将其增加到root组中。注意-g 是将一个用户放到什么组中。
[root@CCIE/]#useradd -g root ccne
增加一个系统用户ccie 注意-r
[root@CCIE/]#useradd -r ccie
增加一个系统用户aa并批定目录为/home/aa
[root@CCIE/]#useradd -d /home/aa aa

arpm 电源管理 笔记本没有用电池

[root@CCIE/]#apm
NoAPMsupportinkernel

显示剩余电量
[root@CCIE/]#apm -m

显示当前系统体系结构
[root@CCIE/]#arch
i686

将程序放在后台
[root@CCIEhome]#bg

将后台的任务拉到前台
[root@CCIE/]#fg

执行命令后退出
[root@CCIE~]#exec
[root@CCIE~]#exec ls

列出执行过的指令
[root@CCIE~]#fc-l

重启 需要账户为root
[root@CCIE~]#reboot
[root@CCIE~]#shutdown -rnow
[root@CCIE~]#init 6
关机 需要账户为root
[root@CCIE~]#halt
[root@CCIE~]#shutdown -hnow
[root@CCIE~]#powerofff
[root@CCIE~]#init 0
关闭系统关关闭电源
[root@CCIEccie]#halt -p

查看登陆失败的相关消息
[root@CCIEccie]#lastb

查看所有的语言支持
[root@localhost~]#locale -a
将字体变成中文
[root@localhost/]#LANG=zh_CN.gb2312
语言环境默认情况下
[root@localhost/]#ls/etc/sysconfig/i18n
[root@localhost/]#cat/etc/sysconfig/i18n
LANG=“zh_CN.UTF-8”
SUPPORTED=“zh_CN.UTF-8:zh_CN:zh”

显示系统信息
[root@CCIE/]#uname -a
Linux CCIE 2.6.18-92.el5 #1 SMP Tue Apr 29 13:16:12 EDT 2008 i686 i686 i386 GNU/Linux SYSFONT=“latarcyrheb-sun16”

3、sed和awk 、sort , tr , cut, paste, uniq, tee等,另一个脚本语言,个人建议学Python会比较好,难实现自动化运维,Perl是文本处理很强大,反正这两个学一个就行了。
4、监控工具

十分十分重要,我个人建议,最好学这3个,cacti,nagios,zabbix。企业用得最多应该是nagios和 zabbix,反正都学吧,但nagios会有点难,因为会涉及到用脚本写自动监控,那个地方很难。

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值