您的位置:首页 > Web前端

fedora常用命令

2014-05-14 09:07 169 查看
fedora经验总结(新手必看)!!!

一、常用技巧

1,在linux中设置环境变量的方法:

 如果命令在环境变量已经设置的路径下,在终端命令行输入该命令的文件名和参数(如需要参数),回车即可。如果不在已设路径下,命令前需要加上完整的路径。每次都这样会很麻烦,一个“一劳永逸”的办法是把一些常用命令的路径加入环境变量。有三种方法可以设置环境变量:

使用以下命令可以把这些路径加入环境变量,但是退出这个命令行就会失效:

   #export path=".:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"

   #source .bashrc(有些命令即便能调用,也不会出现任何信息,或者要输入root密码的,说明要以超级用户权限运行)

修改profile文件,可永久生效。有两个文件可选:“/etc/profile”和用户主目录下的“.bash_profile”,“/etc/profile”对系统里所有用户有效,用户主目录下的“.bash_profile”只对这个用户有效。

profile文件中“path=$path:$home/bin”这一行是设置环境变量路径的,“$path”表示原先设定的路径仍然有效,注意不要漏

掉,某些软件可能还有“path”以外类型的环境变量需要添加,但方法与此相同,并且也需要注意“$”。可在此行后面加入需要设置的路径,

如:“path=$path:$home/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr

/local/sbin”,当用户输入一个命令并回车后,shell会依次在这些路径里找对应的可执行文件并交给系统核心执行。

修改用户主目录下的“.bashrc”文件,可永久生效。

   在里面加入“path=".:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin”

注意,与dos/window不同,unix类系统环境变量中路径名用冒号分隔,不是分号。另外,软件越装越多,环境变量越添越多,为了避免造成混乱,建议所有语句都添加在文件结尾,按软件的安装顺序添加。格式如下:

  # 软件名-版本号

  path=$path:路径1:路径2:...:路径n

  其他环境变量=$其他环境变量:...

  在“profile”和“.bash_profile”中,“#”是注释符号,写在这里除了视觉分隔外没有任何效果。

  设置完毕,注销并重新登录,设置就生效了。如果不注销,直接在shell里执行这些语句,也能生效,但是作用范围只限于执行了这些语句的shell。

  

 相关的环境变量生效后,就不必总是到软件的可执行文件目录里去操作了。设置完成后,可用“echo $path”命令进行验证。

2,虚拟控制台与运行级别:

在虚拟控制台下(tui),可以使用alt+f1到alt+f6在多个虚拟控制台间切换;在图形界面下,可以使用ctrl+alt+f1到

ctrl+alt+f6切换到虚拟控制台,ctrl+alt+f7可切换到图形界面下。系统任何时候都运行在一个指定的运行级别上,系统的关机、重启等动

作实际上是运行级别间的切换,单用户时可以直接用“init x”进行关机和重启。

   运行级别         说明

      0        所有进程将被终止,机器将有序地停机,关机时处于此级别

      1        单用户模式,用于系统维护,只有少量进程运行,所有的服务也不启动

      2        多用户模式,只比“3”少启动nfs服务

      3        多用户模式,允许多用户登录,是系统默认的级别

      4        留给用户自定义的级别

      5        多用户模式,并在启动后运行x-windows,给出一个gui

      6        所有进程被终止,系统重启

#init 级别数 (切换系统的运行级别为“级别数”)

#runlevel (查看系统当前运行级别)

 

3,设置系统默认运行级别:

#vi /ect/inittab (将“id:5:initdefault:”中的“5”改为需要的运行级别代码)

4,关机与重启:

#halt (系统关机)

#reboot (系统重启)

 在多用户环境中,通常使用“shutdown”命令关机或重启系统,它能够以一种比较安全的方式来关闭系统,所有登录的用户将被通知,新的登录将被阻止,同时所有进程也将被通知。

#shutdown 选项

-t sec (等待sec秒后关机)

-k (并不真的关机,只是给每个用户发送警告信息)

-r (关闭之后重启系统)

-h (关闭之后停滞系统)

-f (重启后不用fsck检查磁盘)

-f (重启后强制用fsck检查磁盘)

time (设置系统关闭的时间,后面加上时间,格式为hh:mm)

warning-message (发给用户的警告信息)

#shutdown -r +5 "system will be reboot 5 minnites,please save your work."(5分钟后重启,并对登录的用户发出警告)

#shutdown -r now(立即重启)

#shutdown -h now(立即关机)

#shutdown -t 60(60秒后关机)

#shutdown -k(仅发出警告,假关机)

5,linux下清屏命令

#clear (或ctrl+l)

二、网络命令

1,ifconfig命令

 ifconfig可设置网络设备的状态,或是显示目前的设置。

#ifconfig [网络设备] [down|up|-allmulti|-arp|-promisc] [add]

[del] [ ] [io_addr] [irq ]

[media] [mem_start]

[metric] [mtu] [netmask]

[tunnel] [-broadcast] [- pointopoint]

[ip地址]

add 设置网络设备ipv6的ip地址。

del 删除网络设备ipv6的ip地址。

down 关闭指定的网络设备。

设置网络设备的类型与硬件地址

#ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx(更改eth0的mac地址)

io_addr 设置网络设备的i/o地址。

irq 设置网络设备的irq。

media 设置网络设备的媒介类型。

mem_start 设置网络设备在主内存所占用的起始地址。

metric 指定在计算数据包的转送次数时,所要加上的数目。

mtu 设置网络设备的mtu。

netmask 设置网络设备的子网掩码。

tunnel 建立ipv4与ipv6之间的隧道通信地址。

up 启动指定的网络设备。

-broadcast 将要送往指定地址的数据包当成广播数据包来处理。

-pointopoint 与指定地址的网络设备建立直接连线,此模式具有保密功能。

-promisc 关闭或启动指定网络设备的混杂(promiscuous)模式。

[ip地址] 指定网络设备的ip地址。

[网络设备] 指定网络设备的名称。

 使用ifconfig和route命令更改ip设置:

#ifconfig eth0 down (关闭eth0)

#ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx(临时更改eth0的mac地址,即时生效)

#ifconfig eth0 192.168.161.9 netmask 255.255.252.0 up (临时设置ip地址,子网掩码,即时生效)

#route add default gw 192.168.162.1 (临时设置网关,即时生效)

#vi /etc/sysconfig/network-scripts/ifcfg-eth0 (编辑配置文件,永久更改ip设置,重启生效)

#vi /etc/resolv.conf (编辑配置文件,设置dns)

#ifconfig eth0 promisc  (将eth0设置为混杂模式)

#ifconfig eth0 -promisc (取消混杂模式)

#ifconfig eth0 arp (打开eth0的arp解析)

#ifconfig eth0 -arp (关闭arp解析)

#ifconfig eth0:1 192.168.1.1 netmask 255.255.255.0

#ifconfig eth0:2 192.168.1.2 netmask 255.255.255.0 (一块网卡设置两个地址)

2,route命令

# route [-n|ee] (显示内核路由表)

# route add [-net|-host] 目標主檆或緒域 [netmask] 目标掩码 [gw|dev] (添加一条路由)

# route del [-net|-host] 目標主檆或緒域 [netmask] 目标掩码 [gw|dev] (删除一条路由)

-n (以ip地址的形式显示路由表)

-ee (以较长的形式显示路由表)

add (增加一条路由)

del (删除一条路由)

-net (操作一条到网络的路由)

-host (操作一条到主机的路由)

netmask (子网掩码)

default (即“-net 0.0.0.0 netmask 0.0.0.0”)

gw (网关,即gateway,需要以ip地址的形式给出)

dev (网关,即device,需要以设备名的形式给出)

# route -ee

kernel ip routing table

destination     gateway         genmask         flags metric ref    use iface    mss   window irtt

192.168.9.2     *               255.255.255.255 uh    0      0        0 ppp0     0     0      0

192.168.122.0   *               255.255.255.0   u     0      0        0 virbr0   0     0      0

192.168.160.0   *               255.255.252.0   u     0      0        0 eth0     0     0      0

default         *               0.0.0.0         u     0      0        0 ppp0     0     0      0

 路由表中各字段含义

destination (目标地址)

gateway (网关的主机名或ip地址,*表示目标网络与主机在同一子网内,即直连路由,不需要网关)

genmask (目标地址的网络掩码)

flags (表示路由的标志,有以下几种)

     u (route is up):路由已经启动

     h (target is a host):目标是一台主机

     g (use gateway):使用网关

     r (reinstate route for dynamic routing):对动态路由进行复位设置

     d (dynamically installed by daemon or redirect):已经由服务或转port功能设置为动态路由

     m (modified from routing daemon or redirect):路由已經被修改

     !  (reject route):拒绝路由,用来抵挡不安全的网络

metric (路由的单位开销量,即到达指定网络所需的跳数)

ref (对这个路由的引用次数)

use (表示路由表条目被使用的次数)

iface (即interface,表示数据应发往哪个接口)

 使用route命令添加的路由条目,在重启后会失效。如果需要添加永久路由,可以将route add ...语句添加到以下文件里:

1.在/etc/rc.local里添加

2.在/etc/sysconfig/network里添加到末尾

 开启ip转发:

# echo "1" >/proc/sys/net/ipv4/ip_forward (临时)

# vi /etc/sysctl.conf --> net.ipv4.ip_forward=1 (永久开启)

3,netstat命令:

 netstat命令用于显示网络连接、路由表和网络接口信息,用户可以知道目前有哪些网络连接正在运行。

#netstat

-a (显示所有的socket,包括正在监听的)

-c (每隔一秒就刷新一遍,直到中断)

-i (显示所有网络接口的信息)

-n (以ip代替名称,显示网络连接信息)

-r (显示核心路由表)

-t (显示tcp协议的连接信息)

-u (显示udp协议的连接信息)

-v (显示正在进行的网络协议)

三、文件系统管理

1,查看文件系统:

(1)df命令

 df命令用于检查文件系统的磁盘空间占用情况。可以获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

#df 选项

-a, --all (显示所有文件系统的使用情况,包括虚拟文件系统) include dummy file systems

-b, --block-size=size (使用字节大小块) use size-byte blocks

-h, --human-readable (以人们可读的形式显示大小) print sizes in human readable format (e.g., 1k 234m 2g)

-h, --si (同-h,但是强制使用1000而不是1024) likewise, but use powers of 1000 not 1024

-i, --inodes (列出inode信息,代替块用法) list inode information instead of block usage

-k (类似--block-size=1k) like --block-size=1k

-l, --local (只列出本地文件系统) limit listing to local file systems

   --no-sync (在获取使用信息前不调用sync) do not invoke sync before getting usage info (default)

-p, --portability (使用posix输出格式) use the posix output format

   --sync (在获取使用信息前调用sync) invoke sync before getting usage info

-t, --type=type (只列出指定类型的文件系统) limit listing to file systems of type type

-t, --print-type (显示文件系统类型) print file system type

-x, --exclude-type=type (只列出不是指定类型的文件系统) limit listing to file systems not of type type

(2)fdisk命令

 fdisk命令用于查看硬盘及分区的详细信息,如磁头、柱面、扇区、磁道等。

#fdisk [-b ssz] [-u] disk (改变分区表) change partition table

#fdisk -l [-b ssz] [-u] disk (列出分区表)list partition table(s)

#fdisk -s partition (给出分区大小,以block为单位)give partition size(s) in blocks

这里的disk是一些像/dev/sda或/dev/hdb的设备,分区是一些像/dev/hday的设备 here disk is

something like /dev/hdb or /dev/sda and partition is something like

/dev/hda7

-u (给出开始和结束扇单元,代替柱面)give start and end in sector (instead of cylinder) units

-b 2048 (确定操作使用2048字节扇区的磁盘) (for certain mo disks) use 2048-byte sectors

2,创建文件系统:

#mkfs  

-t fstype (指定要创建的文件系统的类型)

-c (查找坏块,初始化坏块列表)

#mkfs -t ext3 /dev/sdb2 (在b串口硬盘的第2个分区上创建ext3类型的文件系统)

#mkfs -t vfat /dev/sda1(在a串口硬盘的第1个分区上创建fat32类型的文件系统)

3,挂装其它存储设备:

#mount [||]

-t fstype (指定要挂装的文件系统的类型,如果不知道可以用-t auto参数让系统自行判断)

-r (如果不想修改要挂装的文件系统,可以使用此参数,以只读方式挂起)

-w (以可写的方式挂装文件系统)

-o (用于指定选项,如只读为ro,读写为rw)

-a (安装所有的文件系统)

#mount -t vfat /dev/sdb1 /mnt/ude(将/dev/sdb1挂载到/mnt/ude)

 fedora8可直接识别ntfs,fat32格式的文件系统,系统默认挂装在“/media”下

 挂装ntfs格式分区

#mount -t ntfs-3g 设备名 挂装点

 挂装iso文件

#mount -t iso9660 -o loop 文件名 挂装点

 如果想制作iso文件,把光盘放到光驱中,然后执行如下的拷贝命令就可以把光盘上的内容拷贝到一个iso文件中去。

#cp /dev/cdrom *.iso

4,卸载挂装的文件系统:

#umount <设备名或挂装点>

#umount /dev/cdrom (将/dev/cdrom上挂装的文件系统卸载)

5,查看目录或文件属性:

#ls 参数 (=dos下“dir”命令)

-a 列出所有文件,包括以“.”开头的隐藏文件;

-a 列出除“.”和“..”外的所有文件;

-b 不输出以“~”结尾的备份文件;

-c 按列输出,纵向排序;

-c 输出文件的i节点的修改时间,并以此排序;

-d 将目录像文件一样显示,而不是显示其下的文件;

-f 在文件后以符号说明文件类型,*为可执行文件;

-g 输出文件的组信息;

-h 列出文件实际大小

-i 输出文件的i节点的索引信息;

-l 列出文件详细信息,可用“ll”命令代替;

-m 横向输出文件名,以“,”分开;

-n 用数字的uid,gid代替名称;

-o 显示除组外的详细信息;

-q 把文件名用双引号括起;

-r 列出所有子目录下的文件;

-s 在文件后输出文件大小;

-s 以文件大小排序;

-t 以时间排序;

-u 以上次被访问的时间排序;

-x 按列输出,横向排序;

-x 以文件的扩展名排序;

-1   一行只输出一个文件;

--color 不显示彩色文件名;

6,删除文件或目录:

#rm [参数] 文件名目录名

-f (强制删除)

-r (递归地删除)

#rm -rf /temp (强制删除/temp及其下所有文件)

7,新建目录:

#mkdir 目录名

8,删除目录:

#rmdir 目录名 (rmdir命令只能删除空目录)

创建链接文件:ln -s(表示符号链接) /路径/源文件  /路径/链接文件.ln;(“链接文件”类似win中的“快捷方式”)

9,改变路径:

#cd 绝对或相对路径

10,创建链接文件:

 linux中的链接文件类似windows中的快捷方式。链接文件可部分代替原文件的功能,且对链接文件进行修改,可自动更新到源文件中。

#ln -s 源文件 目标文件 (-s表示创建的是符号链接)

#ln -s /test/file /test1/file.ln (为file文件创建链接文件file.ln)

11,复制文件:

#cp [参数] 源文件 目标文件

-f (强制覆盖已经存在的目标文件)

-r (递归地连同子目录一起copy)

12,移动文件:

#mv 源文件 目标文件

 mv命令类似于windows中的剪切,不同之处在于它带有将文件改名的功能。

13,显示文件内容:

#cat 文件名

 cat命令可以将文件内容显示出来,也可以将文件内容合并后输出。它不支持分而显示,如果文件较长,只能看到最后一页。

#cat file1 file2> file3 (将file1和file2连接起来并输出到file3)

14,分页显示文件内容:

#more [+“num”or“str”] 文件名

 more命令可以分页显示文件内容,+参数后可跟行号或字符串,+行号表示从指定行开始显示,+字符串表示从指定字符串处开始显示。

#more +abc /etc/rpc (从字符串“abc”开始分页显示/etc/rpc文件的内容)

三、用户和组群管理

 

1,linux下的帐户系统文件

 linux系统中,用户和组的相关系统都保存在用户和组数据库文件中,主要有“/etc/passwd”、“/etc/shadow”、“/etc/group”和“/etc/gshadow”四个文件。

(1),用户帐号文件-passwd

 /etc/passwd文件也称为密码文件,是于基本的用户数据库文件,它列出了所有有效用户的相关信息。passwd文件需要能够被所有用户访问。该文件内每个用户占一行,被分为7个字段:

(1) 用户名;

(2) 密码,采用加密形式;

(3) uid;

(4) gid;

(5) 帐号信息,也叫gecos。

(6) 用户主目录;

(7) 登录shell。

 /etc/passwd中uid很重要,系统使用uid而不是用户名来区别用户。0-99为系统uid,如果passwd文件中有两个不同用户具有相同的uid,则这两个用户对相互的文件具有相同的存取权限。

 /etc/passwd文件格式可以使root能够要求用户定期修改他们的口令。passwd文件中,有些加密口令项中有“,”号,“,”号后字符的意义为:

(1)第一个字符,口令有效期的最大周数,

(2)第二个字符,再次修改口令前原口令需使用的最小周数,

(3)其余字符表示口令最新修改时间。

steve:xydfcctrt180x,m.y8:0:0:admin:/:/bin/sh

pat:xmottvoyumjls:0:0:admin:/:/bin/sh

 口令中“,”后字符是根据passwd_esc计数器计算的,计算的方法为:

      :=0

      /=1

    0~9=2~11

    a~z=12=37

    a~z=38~63

 root需要将前两个字符放进/etc/passwd文件中,以要求用户定期修改口令,另外两个字符在用户修改口令时由passwd自动写入。可在“,”后加入“..”,使用户在下次登录时必须修改口令。有两种特殊情况:

(1)第一字符小于第二字符,则不允许用户修改口令,仅root可以修改;

(2)前两个字符都是“.”,用户下次登录时将被要求修改口令,修改后passwd命令将“.”删除,以后不再要求用户修改口令。

(2),用户口令文件-shadow

 在影子口令机制中,加过密的口令数据项被从passwd文件中转移到shadow文件中,passwd文件仍然可以被系统上所有用户访问,shadow文件只能被具有root权限的用户访问。shadow文件包含着口令失效期和帐号是否被禁用等信息,分为9个字段:

(1) 用户名;

(2) 加过密的口令。如果为空则登录时不需要口令,如果含有不属于口令集{.,/,0-9,a-z,a-z}中的字符,则对应的用户不能登录;

(3) 从1970年1月1日起计算,到用户最后一次修改口令时的天数(时间起点会因系统不同而不同);

(4) 两次修改口令之间所需的最小天数,即一次修改后需要再过多少天才能修改这个口令;

(5) 口令保持有效的最大天数,即一次修改后需要再过多少天这个口令必须被修改;

(6) 警告天数,需要在这个口令失效前多少天对用户发出警告;

(7) 口令失效后多少天禁用此帐号,另外的解释是用户没有登录活动但帐号仍能保持有效的天数;

(8) 从1970年1月1日起计算,该口令已经被禁用多少天,另外的解释是帐号从设置开始可使用的天数;

(9) 保留。  

(3),用户组帐号文件-group

每个用户至少会属于一个分组,也就是他缺省的用户分组。在需要的情况下,用户还可以分配到其他分组中去。group文件也需要能够被所有用户访问,因为这

样应用程序才能测试用户与分组之间的关联性。分组名不允许超过8个字符,每个分组id也必须是唯一的。/etc/group包含着每个每个用户缺省的分组

id(gid),分为4个字段:

(1) 分组名;

(2) 加过密的分组口令;

(3) gid;

(4) 以“,”分隔的分组成员清单

(4),使用vipw和vigr命令编辑用户帐号文件和组帐号文件

 vipw或vigr启动vi编辑器打开文件的一个副本,每次只允许一个人编辑passwd或group文件,可以防止用户在passwd文件被编辑的时候修改他们的口令。当编辑结束时,用副本代替原文件。可以使用“vipw -s”给shadow文件加入对应的项。

(5),使用pwck和grpck验证用户和组帐号文件

 pwck命令检查密码文件passwd和shadow的完整性,以确认文件中的信息都有正确的格式、各数据域有合法的信息。对于不正确的信息建议用户删除。

 grpck命令检查group和gshadow文件的完整性,以确认文件中的信息都有正确的格式、各数据域有合法的信息。

2,用户帐号维护命令

(1),useradd命令

#useradd [参数] 用户名

 useradd命令允许一次添加一个用户到系统中,如果命令中不定义参数,则使用各参数的默认值,可以使用“useradd-d”命令查看各参数的默认值。

-c 其他信息 (在gecos域中设置用户全名,与其它参数一样,如果设置值中间有空格,必须在两端加上引号)

-d 主目录 (缺省情况下,用户主目录被定义为/home/用户名,此参数可以改变主目录)

-e 失效日期 (缺省情况下,帐号永不失效,此参数可以设置用户失效日期,日期格式为mm/dd/yy,2000年用00表示)

-f 天数 (此参数定义口令失效后该帐号还能够使用的天数,0表示立刻禁用,-1表示永不禁用,缺省值为-1)

-g 分组名或gid (此参数定义用户的缺省分组,后面可以跟分组名或gid,但分组必须已经在group文件中定义)

-g 分组名或gid (此参数把用户添加到其他的分组中去,可用“,”分隔,定义多个分组)

-m (不建立用户登录子目录)

-n (redhat把建立一个与新用户同名的分组做为用户添加工作的一部分,此参数禁止这种行为)

-s shell路径 (此参数可定义用户的登录shell,缺省为/bin/bash)

-u uid (缺省情况下,程序会自动找出一个可用的uid分配给新用户,此参数可将指定uid分配给新用户)

#useradd -c "h.d.core" -g admin -g sopport,root -s /bin/tcsh hdc

(添加一个名为hdc的用户,命名为h.d.cor,缺省分组为admin并属于sopport和root组,登录shell为/bin/tcsh)

(2),usermod命令

#usermod [参数] 用户名

 usermod命令允许修改现有用户的信息,它的工作原理与useradd类似,参数作用相同。在使用-l和-u参数时应注意,必须确认被修改的用户当前没有登录上机或运行任何程序,否则会引起不便。

-l 新用户名 (此参数可修改现有用户的登录名)

(3),userdel命令

#userdel [-r] 用户名

 userdel命令可删除现有用户,此命令只有-r一个可选参数。在不加参数时,将只删除passwd、shadow和group中关于此用户的项目,加-r参数将递归地删除以上项目和登录子目录中该用户的所有文件。

3,组帐号维护命令:

(1),groupadd命令

 对于用户分组进行操作的命令类似于对用户进行操作的命令,但他们并不作用于单个用户,而是作用于/etc/group文件中列出的分组。改变分组并不会改变该分组中用户的属性。

#groupadd [参数] 分组名

-g gid (指定新分组的gid,缺省情况下系统会把gid指定为找到的第一个可用值)

-r (缺省情况下,系统会自动搜索第一个大于499的gid值,此参数告groupadd命令这个一个系统分组,需要使用第一个小于499的可用值)

-f (在添加新分组时,如果该分组已经存在,命令会自动退出执行,使用此参数,在退出执行前不会修改分组的设置值)

#groupadd -g 800 test (添加一个gid为800,名为test的分组)

(2),groupmod命令

 groupmod命令可以修改某个现有分组的属性。

#groupmod [参数] 分组名

-g 新gid (改变现有分组的gid为新gid)

-n 新组名 (改变现有分组的分组名为新组名)

#group -g 1000 -n new test (将test分组的gid和分组名分别改为1000和new)

(3),groupdel命令

#groupdel 分组名 (删除指定分组,此命令没有可选参数)

4,口令维护命令

(1),passwd命令

 root可以使用passwd命令修改任何用户的口令。passwd会提示用户输入一个新口令,并需要重复输入一次,如果输入的口令过于简单,passwd会发出抱怨,要求用户使用复杂一些的口令。

#passwd [参数] 用户名

-k或--keep-token (保持没有到期认证的令牌)

-d或--delete (从指定的用户名删除口令,root only)

-l或--lock (锁住指定的用户名,root only)

-u或--unlock (解锁指定的用户名,root only)

-f或--force (强制操作)

-x或--maximum=days (最大密码生存天数,root only)

-n或--minimum=days (最小密码生存天数,root only)

-w或--warning=days (密码失效前对用户发出警告的天数,root only)

-i或--inactive=days (密码失效后多少天禁用此帐户,root only)

-s或--status (报告指定帐户的口令状态,root only)

--stdin (从stdin读取新的令牌,root only)

--usage (显示简短的使用信息)

(2),gpasswd命令

 类似于passwd命令,root可用gpasswd修改任何组的口令。

#gpasswd 分组名

(3),chfn命令

 chfn用来改变finger信息,该信息是存放在/etc/passwd档内的gecos信息,可使用finger命令来显示。linux的finger显示4段信息:真实姓名、工作地点、办电和宅电。

#chfn [参数] [用户名]

-f 姓名 (改变指定用户的姓名)

-o office (改变指定用户的工作地)

-p phone (改变指定用户的办电)

-h homephone (改变指定用户的宅电)

(4),chsh命令

 chsh用来改变用户的登录shell,如果在命令列没有指定shell,chsh会提示一个有效shell给用户。

#chsh [参数] [用户名]

-s (更改指定用户的登录shell)

-l (列出记录在/etc/shells文件中的shell)

5,用户和组状态命令

(1),id命令

 id命令用于显示指定用户的实际id和有效id。

#id [参数] [用户名]

-a (忽略,用于兼容其他版本)

-g (只显示有效{effective}gid)

-g (显示所有gid)

-n (显示用户名而不是数字,不可单独使用)

-r (显示实际id而不是有效id)

-u (只显示有效uid)

(2),whoami命令

 whoami命令用于查看当前用户名。

(3),su命令

使用su命令可以从当前用户切换为其他用户,如不加用户名,则切换为root用户。出于安全的考虑,系统一般禁止root从除系统控制台外的其他方式登

录,以root身分登录一般使用su命令。从root切换到其他用户时不需要输入口令。su不记录以root身份做了什么,它会创建一条日志说明谁在什么

时候变成了root。

#su [参数] [用户名]

-,-l,--login (类似重登录为新用户,以新用户改变环境变量及登录目录)

-c 命令(变为新用户,执行一条“命令”后再变回原用户)

-f(不读取启动文件,如“csh,cshre”等,仅用于csh或tcsh两种shell)

-m,-p(不改变环境变量)

(4),groups命令

 groups命令用来显示指定用户的属组。

#groups 用户名

6,临时禁用帐号

 在不删除帐号的情况下临时禁用它,可以先编辑tail脚本,然后将该帐号的登录shell改为此脚本,此脚本需设置可执行位。

#mkdir /usr/local/lib/no-login/ (建立no-login目录)

#vi /usr/local/lib/no-login/deny (建立deny文件,加入以下内容)

#!/usr/bin/tail +2 (#!表示该行是一条命令,需要执行,+2表示显示第2行以后的内容)

this account has been closed!

please call 13995096098.

#chomd 755 /usr/local/lib/no-login/deny (给deny文件添加可执行位)

#chsh -s /usr/local/lib/no-login/deny 用户名 (改变需要禁用的帐号的登录shell为deny)

四、权限与文件系统安全

1,“ls -l”命令输出结果中各字段含义:

(1),文件类型,第1位(“-”普通文件、“d”目录文件、“l”符号链接文件、“b”快设备文件、“c”字符设备文件、“p”管道文件、“s”socket文件)

(2),权限,第2至10位(9个字母分成3组,3个一组,分别代表“属主权限”、“属组权限”、“其他权限”,“-”表示没有权限)

(3),i-node,硬连接数(表示占用 i-node数。i-node是文件内容的真实表达,而filename是inode上层的表示方法。因此,每个文件名只能对应一个i-node,一个i-node可以对应多个文件名)

(4),文件属主

(5),文件属组

(6),文件大小

(7),创建时间

(8),文件名

2,unix下关于文件权限的表示方法和解析

在linux中,使用系统资源的人分为4类:超级用户、文件属主、属主同组、其他。超级用户具有操作系统的一切权限,不需要指定权限,其他三类都需要指定

权限。unix下可以用ls -l 命令来看到文件的权限。用ls命令所得到的表示法的格式是类似这样的:-rwxr-xr-x

。下面解析一下格式所表示的意思。这种表示方法一共有十位:

       1 2 3 4 5 6 7 8 9 10

       - r w x r - x r -  x

 第1位表示文件类型,可以为p、d、l、s、c、b和-:

p表示命名管道文件

d表示目录文件

-表示普通文件

s表示socket文件

c表示字符设备文件

b表示块设备文件

l表示符号连接文件

 第2-4位、5-7位、8-10位分别表示文件所有者的权限,同组用户的权限,其他用户的权限,其形式为rwx:

r:可读,文件可读其内容,目录可列出基下文件

w:可写,文件可修改内容,目录创建、删除文件

x:可执行,文件可执行,目录可进入

s:suid(第4位)或sgid(第7位)与可执行权限均被设置

s:suid(第4位)或sgid(第7位)被设置,可执行权限没有设置

t:sticky(粘着位)与可执行权限被设置

t:sticky(粘着位)被设置,可执行权限没有设置

-:没有权限

 例子:ls -l myfile显示为:

-rwxr-x--- 1 foo staff 7734 apr 05 17:07 myfile

表示文件myfile是普通文件,所有者foo对文件有读写执行权限,staff组的成员对文件有读和执行权限,其他的用户对这个文件没有权限,1个硬连

接,文件的所有者是foo用户,而foo用户属于staff组,文件只有1个硬连接,长度是7734个字节,最后修改时间4月5日17:07。

 如果一个文件被设置了suid或sgid位,会分别表现在所有者或同组用户的权限的可执行位上,设置了sticky位,会表现在其他用户的可执行位上,例如:

1、-rwsr-xr-x 表示suid和所有者可执行被设置

2、-rwsr--r-- 表示suid被设置,所有者可执行没有被设置

3、-rwxr-sr-x 表示sgid和同组用户可执行被设置

4、-rw-r-sr-- 表示sgid被设置,同组用户可执行没有被设置

5、-rwxr-xr-t 表示sticky和其他用户可执行被设置

6、-rwxr--r-t 表示sticky被设置,其他用户可执行没有被设置

 其实在unix的实现中,文件权限用12个二进制位表示,如果该位上的值是1表示有相应的权限,值为0表示没有此权限。

11 10 9  8 7  6  5  4  3  2  1   0

s  g  t  r w  x  r  w  x  r  w   x

第11位为suid位,第10位为sgid位,第9位为sticky位,第8-6为所有者位,第5-3位为所属组权限,第2-0位为其他用户权限。上面的

“-rwsr-xr-x”的值为: 1 0 0 1 1 1 1 0 1 1 0 1,“-rw-r-sr--”的值为: 0 1 0 1 1 0 1

0 0 1 0 0。

在查找文件时可以用文件权限的8进制代号来查找,将以上12位2进制数转换为8进制即可。例如,设置suid位的文件为

“100,000,000,000(2进制)=4000(8进制)”,设置suid与sgid的文件为“110,000,000,000(2进

制)=6000(8进制)

”,查找命令为“find / -perm -4000 -type f -ls”

 

3,使用“chmod”命令改变文件权限

 文字设定法

#chmod [ugoa] [+-=] [rwxugosstt]

u表示属主,g表示属组,o表示其他,a表示所有

+表示增加权限,-表示删除权限,=表示分配新权限的同时将原有权限删除

r表示可读,w表示可写,x表示可执行,ugo表示与该字母代表的用户有相同权限,s与s表示suid或sgid,t与t表示sticky

 数字设定法

chmod [xxxx]  

其中“xxxx”是由表示文件权限的12位二进制数换算的4位八进制数

4,特殊权限的作用:

suid是set user id, sgid是set group

id的意思。当用户运行一个应用程序时,此程序将继承运行它的用户的权限,而不是继承它所属用户的权限。设置了setuid与setgid的程序将继承它

所属用户的权限,而不受运行它的用户权限的限制。

 

 由于suid和sgid是在执行程序(程序的可执行位被设置)时起作用,而可执行位只对普通文件和目录文件有意义,所以设置其他种类文件的suid和sgid位是没有多大意义的。

 

首先讲普通文件的suid和sgid的作用,如果普通文件myfile是属于foo用户的,是可执行的,现在没设suid位,ls命令显示为“-

rwxr-xr-x 1 foo staff 7734 apr 05 17:07

myfile”,任何用户都可以执行这个程序。unix的内核是根据什么来确定一个进程对资源的访问权限的呢?是这个进程的运行用户的(有效)id,包括

user id和group id。用户可以用id命令来查到自己的或其他用户的user id和group id。除了一般的user id

和group id外,还有两个称之为effective

的id,就是有效id,上面的四个id表示为:uid,gid,euid,egid。内核主要是根据euid和egid来确定进程对资源的访问权限。一个

进程如果没有suid或sgid位,则euid=uid

egid=gid,分别是运行这个程序的用户的uid和gid。例如kevin用户的uid和gid分别为204和202,foo用户的uid和gid为

200,201,kevin运行myfile程序形成的进程的euid=uid=204,egid=gid=202,内核根据这些值来判断进程对资源访问

的限制,其实就是kevin用户对资源访问的权限,和foo没关系。

 

 如果一个程序设置了suid,则euid和egid变成被运行的程序的所有者的uid和gid,例如kevin用户运行myfile,euid=200,egid=201,uid=204,gid=202,则这个进程具有它的属主foo的资源访问权限。

 

 suid的作用就是这样:让本来没有相应权限的用户运行这个程序时,可以访问他没有权限访问的资源。passwd就是一个很鲜明的例子。suid的优先级比sgid高,当一个可执行程序设置了suid,则sgid会自动变成相应的egid。

 

sgid。unix系统有一个/dev/kmem的设备文件,是一个字符设备文件,里面存储了核心程序要访问的数据,包括用户的口令。所以这个文件不能给

一般的用户读写,权限设为“cr--r----- 1 root system 2, 1 may 25 1998

kmem”,但ps等程序要读这个文件,而ps的权限设置如为“-r-xr-sr-x 1 bin system 59346 apr 05 1998

ps”,这是一个设置了sgid的程序,而ps的属主是bin,不是root,所以不能设置suid来访问kmem,但大家注意了,bin和root都属



system组,而且ps设置了sgid,一般用户执行ps,就会获得system组用户的权限,而文件kmem的同组用户的权限是可读,所以一般用户执

行ps就没问题了。但有些人说,为什么不把ps程序设置为root用户的程序,然后设置suid位,不也行吗?这的确可以解决问题,但实际中为什么不这样

做呢?因为sgid的风险比suid小得多,所以出于系统安全的考虑,应该尽量用sgid代替suid的程序。下面来说明一下sgid对目录的影响。

suid对目录没有影响。如果一个目录设置了sgid位,那么如果任何一个用户对这个目录有写权限的话,他在这个目录所建立的文件的组都会自动转为这个目

录的属主所在的组,而文件所有者不变,还是属于建立这个文件的用户。

 sticky权限打开后,仅允许文件属主删除及移动该文件。

5,使用umask命令设置权限掩码:

 该命令可为用户帐号中新建文件设置缺省用户权限。权限掩码由4位8进制数组成,第一位为精度位(0),其他三位分别表示属主、属组、其他的权限。将现有的权限减去掩码后,即是建立文件时默认的权限。使用“umask -s”命令查看各用户的默认权限。

 例:将权限掩码设置为“077”,则只有属主具有“rwx”权限,其它用户没有任何权限

# umask 077

# umask -s

u=rwx,g=,o=

6,用chgrp命令改变文件属组:

 chgrp命令用来改变指定文件的属组,指定的文件名支持通配符,如果用户不是该文件的属主或root,则不能更改。

#chgrp [参数] 组名或组id 文件名

-r 表示递归地改变其下子目录和文件的属组

7,用chown命令改变文件属主和属组:

#chown [-r]  

-r 表示递归地改变基下子目录和文件的属性

-v 显示chown所做的工作

五、软件包管理

1,rpm包的名称格式

rpm包的名称格式为“name-version.type.rpm”,其中,name为软件名称,version为软件版本,type为包的类型

(i[3456]86表示在intel

x86计算机上编译的,sparc表示在sparc平台上编译的,alpha表示在alpha平台上编译的,src表示软件源代码),rpm为扩展名。

2,安装rpm包

#rpm -ivh 包文件名

-i (表示安装)

-v (表示在安装过程中显示详细信息)

-h (表示显示水平进度条)

 如果某rpm包的同一版本已经被安装,再次安装时系统会拒绝并提示该包已经安装,可以使用“--replacepkgs”参数来重新安装已安装过的rpm包。例如:

#rpm -ivh --replacepkgs cvs-1.11-i386.rpm

 可以使用“rpm -i url”的形式,从网络上安装rpm包。注意:rpm目前已经允许通过ftp进行查询或安装

3,查询rpm

(1),查询所有的rpm包

#rpm -qa [包文件名] (q=query)

(2),查询指定的rpm包在系统中是否安装

#rpm -q 包文件名

(3),查询rpm包文件中的信息,用于在未安装前了解软件包的信息

#rpm -qp [包文件名]

(4),查询系统中已安装的软件包的描述信息

#rpm -qi 包文件名

(5),查询系统中已安装的软件包中包含的文件

#rpm -ql [包文件名]

ql参数可以用于查找不明路径的程序的真实路径

#rpm -ql mplayer | cat -n (查找mplayer的安装路径)

(6),查询软件包的最低依赖要求

#rpm -qr [包文件名]

(7),查询软件包提供的可使用的所有文件

#rpm -q -provides [包文件名]

(8),查询系统中指定文件所属的软件包

#rpm -qf [文件名]

4,删除rpm

#rmp -e [包文件名] (e=erase)

5,升级rpm

 升级实际上是“删除”与“重新安装”的组合,即先删除旧的版本,再安装新的版本,只是在升级过程中不显示此操作。当系统没有安装软件包时,升级操作也会安装新的软件包。

#rpm -uvh [包文件名]

 如果用户试图升级到旧的版本,系统会拒绝此操作,并提示新的版本已经安装,可用以下命令强制升级到旧版本:

#rpm -uvh --oldpackage [包文件名]

6,刷新rpm

刷新操作会比较用户指定的软件包和已安装的软件包的版本。如果指定的包比已安装的包版本更新,则升级到新版本。如果此包没有安装,刷新操作将不会安装该软

件包,这与升级操作是不同的。此特性可用于升级一组软件包时,当用户下载了大量软件包,但只想升级已经安装在系统上的包,即可使用刷新命令,不必先删除不

需要安装的包。

#rpm -fvh 包文件名

 

 使用下面的命令将只升级已经安装的软件包:

#rpm -fvh *.rpm

六、备份和压缩

1,备份的策略:

 完全备份。指每隔一段时间就对系统进行一次全面的备份,当数据丢失时可以恢复到前一次备份时的状况。每次都需要备份所有的数据,工作量大,且在上次备份之后的数据不能被恢复。

增量备份(incremental)。首先进行一次完全备份,然后每天备份一次在这一天中更改的内容,当经过较长时间后再完全备份,之后重复以上过程。由

于只有每个备份周期进行完全备份,其他只进行更新数据的备份,因此工作量小。恢复时首先恢复到前一个完全备份,然后再经过多次恢复到前一天的状态,这种方

法比较经济。

 差分备份(defferential)。首先进行一次完全备份,然后每天从上次完全备份后更改的全部数据,恢复时只需两次就可以恢复到前一天的状态。

2,使用tar命令打包:

#tar [主选项+辅选项] 文件名

-f name (使用name指定存档文件名或设备名)

-v (列出处理的详细信息)

-c (用于创建一个新的存档文件)

-x (从存档文件中恢复备份文件)

-t (列出一个存档文件中的文件名)

-z (使用gnu的gzip压缩文件或解压)

-z (使用compress压缩文件或解压)

-j (使用bzip2压缩文件或解压)

-u (仅添加比存档文件中更新的文件,即用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后)

-c directory (表示操作的目录为directory,可用“--directory directory”参数代替)

-d (将归档文件的内容与系统上当前文件做比较)

-m (创建/列出/恢复多劵存档文件,以便在几个备份介质中存放)

-n date (指定仅对那些比date新的文件进行操作)

-p (保留文件许可权限)

-p (保留文件的绝对路径,即不去掉“/”)

-w (要求等待用户确认每一步操作)

-w (表示在写入备份内容到备份设备以后再读出来进行验证以提高可靠性)

-t filename (从指定的文件中读取需要备份或恢复的文件名)

-x filename (不处理给定文件中列出的文件)

--exclude filename (操作不包括filename文件)

例(1),备份整个系统

#tar -zcvpf /archive/full-backup-`date '+%d-%b-%y'`.tar.gz --directory / --exclude=mnt .

z表示用gzip压缩,c表示建立一个新的存档文件,v表示显示详细处理信息,p表示保留权限,f表示后面是存档文件名或设备名,`date

'+%d-%b-%y'`可以在文件名中加入当前日期,.tar.gz为文件后缀名(表示用tar命令建立,用gzip压缩),--directory

/表示操作的目录为“/”,--exclude=mnt表示不备份“mnt”,.表示备份当前目录下所有内容。此命令将“/”下除“mnt”外的所有文件

使用tar打包并用gzip压缩备份为“full-backup-日-月-年.tar.gz”的存档文件,并保留文件权限。

例(2),备份指定文件到scsi磁带驱动器

#tar -cvpf /dev/nst0 --label="backup set created on `date '+%d-%b-%y'`." --directory / etc home

c表示建立一个新的存档文件,v表示显示详细处理信息,p表示保留文件权限,f表示后面是存档文件名或设备名(因为磁带驱动器是一个设备,不能用文件名表

示,所以只能把“/dev/nst0”作为tar的参数),由于无法为存档文件指定文件名,“--label”选项可以

在存档文件里写入一些信息,--direcoty / etc

home表示要备份的目录为“/etc”和“/home”,此命令将“/etc”和“/home”两个目录下的文件在“/dev/st0”上用tar打包

为“backup set created on 日-月-年.”的文件,并保留文件权限。

例(3),恢复备份文件

#tar -zxvpf /archive/full-backup-14-may-2008.tar.gz

此命令解开压缩档中的文件,同时保持了原来的属性和权限。z表示用gzip压缩,x表示解包,v表示显示得到的文件列表,p保持权限,f表示后面是存档文

件名或设备名。此命令将存档文件解包并释放到当前目录下,如果需要将文件释放到指定目录,可加参数“--dierctory 路径”。

例(4),只解包“etc/passwd”和“usr/sbin/chpasswd”,并将他们释放到当前目录下。

#tar -zxvpf /archive/full-backup-14-may-2008.tar.gz etc/passwd usr/sbin/chpasswd

例(5),如果想只从档案中恢复一个或几个少量文件,需要先找到路径和文件名。“|

grep”表示将输出结果重新定向到grep命令,“-i”表示忽略大小写。此命令可显示出路径或文件名中包含“chpasswd”的所有文件,找到了路

径和文件名,就可以用上面的命令恢复指定的文件。

#tar -ztvpf /archive/full-backup-14-may-2008.tar.gz | grep -i chpasswd

 说明:tar命令如不带路径参数,则会打包或解包到当前目录下。

3,dump(转储命令)和restore(还原转储)

dump命令可执行tar的功能,但dump倾向于考虑文件系统而不是个别文件,dump检查ext2文件系统上的文件,并确定哪些文件需要备份。这些文

件将出于安全保护而被复制到给定的存储媒体上,大于输出媒体的转储将被划分到多个卷。restore命令从转储映像还原文件,执行转储的逆向功能。

dump和restore可以在网络上运行,可从远程设备进行备份和还原。两者仅限于ext2和ext3文件系统。

(1),dump命令语法格式

#dump [-cnu] [-0至9] [-b 区块大小] [-b 区块数目] [-d 密度] [-f 设备或文件名] [-h 层级' [-s 磁带长度] [-t 日期] [路径或文件系统] 或dump [-ww]

-0至9 (备份的层级)

-b (指定区块大小,单位为db)

-b (指定备份卷册的区块数目)

-c (修改备份磁带预设的密度与容量)

-d (设置磁带密度,单位为bpi)

-f (指定备份设备或文件名)

-h (当备份层级=或>指定的层级时,将不备份用户标识为“nodump”的文件)

-n (当备份工作需要管理员介入时,向所有“operator”群组中的使用者发出通知)

-s (备份磁带的长度,单位为英尺)

-t (指定开始备份的时间与日期)

-u (备份完毕后,在/etc/dumpdates中记录备份的文件系统、层级、日期与时间等)

-w (与-w类似,但仅显示需要备份的文件)

-w (显示需要备份的文件及基最后一次备份的层级、时间与日期)

例:备份整个系统

#dump 0f /dev/nst0 /boot

#dump 0f /dev/nst0 /

 此例中,系统有两个文件系统,“/boot”和“/”,这是常见的配置。它们必须在执行备份时分别地引用。“/dev/nst0”引用第一个scsi磁带驱动器。

“0”表示0级或基本级备份,这是完全系统备份。对于后续的备份,可以使用其他数字1-9来代替0,以改变备份级别。1级备份会保存从执行0级备份以来更

改过的所有文件,2级备份会保存从执行1级备份以来更改过的所有文件,以此类推。dump在执行备份时会输出一个更新文件(/etc

/dumpupdates),此更新文件将在每次执行0级备份时被重设,后续级别的备份会保留它们的标记,直至执行一次0级备份。

 “chattr +d ”命令将向文件添加一个标记,让dump在执行备份时跳过此文件。

(2),restore命令语法格式

#restore [-ccvy] [-b 区块大小] [-d 文件系统] [-f 备份文件] [-s 文件编号] 或

#restore [-chimvy] [-b 区块大小] [-f 备份文件] [-s 文件编号] 或

#restore [-crvy] [-b 区块大小] [-f 备份文件] [-s 文件编号] 或

#restore [-crvy] [-b 区块大小] [-d 文件系统] [-f 备份文件] [-s 文件编号] 或

#restore [-chtvy] [-b 区块大小] [-d 文件系统] [-f 备份文件] [-s 文件编号] [文件...] 或

#restore [-chmvxy] [-b 区块大小] [-d 文件系统] [-f 备份文件] [-s 文件编号] [文件...]

-b (设置区块大小,单位是byte)

-c (不检查倾倒操作的备份格式,仅准许读取使用旧格式的备份文件)

-c (使用对比模式,将备份文件与现有文件相互对比)

-d (允许用户指定文件系统的名称)

-f (从指定的文件中读取备份数据,进行还原操作)

-h (仅解出目录而不包括与该目录相关的所有文件)

-i (使用互动模式,在操作时将依序询问用户)

-m (解开符合指定的inode编号的文件或目录,而非用文件名指定)

-r (进行还原操作)

-r (全面还原文件系统时,检查应从何处开始进行)

-s (当备份数据超过一卷磁带时,可以指定备份文件的编号)

-t (指定文件名称,若该文件已经存在于备份文件中,则列出它们的名称)

-v (显示处理的详细信息)

-x (设备文件名称,从指定的存储媒体里读入它们,若该文件已经存在于备份文件中,则将其还原到文件系统内)

-y (不询问任何问题,一律以同意回答并继续执行指令)

例:重建

#restore -rf /dev/nst0

在设计dump倾向于文件系统而不是单独的文件,因此存在两各不同的文件还原风格。要重建一个文件系统,可以使用-r参数,此参数是为了在空文件系统上进

行操作,并将它还原为已经保存的状态。在执行重建之前,应该已经创建、格式化和装载(mount)了该文件系统,不应该对包含文件的文件系统进行重建。上

面的命令需要针对要还原的每个文件系统分别进行操作,可以重复这个命令来添加增量备份。

例:提取

#restore -xf /dev/nst0 /etc

 如果需要使用单独的文件,而不是整个文件系统,则使用-x参数来提取它们。上面的命令将从磁带备份中提取“/etc”目录。

例:交互式还原

#restore -if /dev/nst0

 此命令将把用户置于交互式shell中,同时还显示了包含在该存档文件中的项。键入“help”将显示一个命令列表,然后就可以浏览并选择需要提取的项目。需要注意,提取的任何文件都将还原至当前目录下。

4,关于压缩的知识:

 打包的存档文件与压缩文件都是文件和目录的一个集合。存档文件是将许多文件或目录变成一个总的文件,其大小是其中所有文件和目录的总和,压缩文件则是将文件通过一些压缩算法变成一个较小的文件。在linux下进行备份,通常先创建存档文件,然后再将其压缩来节省空间。

       常用压缩命令      压缩文件的格式

        gzip/gunzip           .gz

        compress/uncompress   .z

        zip/unzip             .zip

        bzip2/bunzip2         .bz2

        lha                   .lzh

5,gzip/gunzip命令

#gzip [选项] 文件名

-c (将输出写到标准输出上,并保留原文件)

-d (将压缩文件解压)

-l (针对每个压缩文件显示以下字段:“压缩文件的大小”、“未压缩文件的大小”、“压缩比”、“未压缩文件的名字”)

-r (递归式地查找指定目录并处理(压缩或解压)其中所有文件)

-t (测试,检查压缩文件是否完整)

-v (显示每个文件的文件名和压缩比)

-num (用指定的数字“num”调整压缩比,-1或--fast表示最快压缩(压缩比最低),-9或--best表示最慢压缩(高压缩比),缺省值为6。

-s (使用用户自行指定的扩展名)

#gzip 1.txt (使用gzip压缩当前路径下的“1.txt”文件)

 在缺省状态下,gzip会将文件压缩并加上一个.gz的扩展名,然后将原文件删除。

#gzip -d 1.txt.gz (使用gzip解压当前目录下的“1.txt.gz”文件)

 gzip将文件解压,并删除原有的压缩文件。

#gunzip [选项] 文件名 (功能与“gzip -d”相同,参数有“c、l、r”,功能与gzip命令相同)

 说明:gzip/gunzip只针对文件,不能压缩目录,即只能压缩,不能打包。缺省将文件压缩至原路径下,并删除原文件。可处理compress(.z格式)、zip(.zip格式)和pack命令压缩的文件。

6,bzip2/bunzip2命令

#bzip2 [选项] 文件名

 它采用了新的压缩算法,压缩效果更好。若没有加入参数,生成压缩文件后会删除原文件。可处理“.bz2”格式的文件。

-c或stdout (将执行结果输送到标准输出)

-d或decompress (解压缩)

-f或force (处理时若文件与现有文件同名,缺省为不覆盖现有文件。此参数为覆盖现有文件)

-h或help (显示帮助)

-k或keep (保留原有文件)

-s或small (降低程序执行时内存使用量)

-t或test (检查文件的完整性)

-v或verbose (显示处理的详细信息)

-z或compress (强制压缩)

-l、license、v、version (显示版本信息)

--repetitive-best (若文件中有重复出现的资料时,可利用此参数提高压缩效果)

--repetitive-fast (若文件中有重复出现的资料时,可利用此参数加快执行速度)

-num (用指定的数字“num”调整压缩比,-1或--fast表示最快压缩(压缩比最低),-9或--best表示最慢压缩(高压缩比)。

#bunzip2 [选项] 文件名 (功能与“bzip2 -d相同,参数有“f”、“k”、“s”、“v”、“l”,功能与bzip2相同)

7,compress/uncompress命令

#compress [选项] 文件名

 此命令历史悠久,但压缩效果不佳,已经逐渐被gzip和bzip2取代,生成压缩文件后缺省会删除原文件。可处理“.z”格式的文件。

-r (递归操作,如果指定目录变元,则压缩该目录及其子目录中的所有文件)

-c (将压缩数据返回标准输出,而缺省情况下为压缩文件将压缩数据返回文件)

-v (显示每个文件夹的压缩百分比)

#uncompress [选项] 文件名

-c (将压缩数据发往标准输出而不是改写旧的压缩文件)

8,zip/unzip命令

 功能与win平台下的zip类压缩工具相同,可以把许多文件压缩成一个文件。生成压缩文件后,缺省不删除原文件,可处理“.zip”格式的文件。

#zip [选项] [-b 工作目录] [-ll] [-n 字尾字符串] [-t 日期时间] [-压缩效率] [压缩文件] [文件...] [-i 范本样式] [-x 范本样式]

-a (调整可执行的自动解压缩文件)

-b (指定暂存放文件的目录)

-c (替每个压缩的文件加上注释)

-d (从压缩文件内删除指定的文件)

-d (压缩文件内不建立目录名称)

-f (类似-u参数,但不更新已有文件,会将压缩档中没有的文件加入到压缩档中)

-f (尝试修复已损坏的压缩文件)

-g (将文件压缩后附加在已有的压缩文件之后,而非另行建立新的压缩文件)

-h (帮助)

-i (只压缩符合条件的文件)

-j (只保存文件名称及其内容,不存放任何目录)

-j (删除压缩文件前面不必要的数据)

-k (使用ms-dos兼容格式的名称)

-l (压缩文件时,把lf字符换成lf+cr字符)

-ll (压缩文件时,把lf+cr字符换成lf字符)

-l (显示版本信息)

-m (将文件压缩并加入压缩文件后,删除原文件)

-n (不压缩具有特定字尾字符串的文件)

-o (以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同)

-q (不显示指令执行过程)

-r (递归处理)

-s (包括系统和隐藏文件)

-t (把压缩文件的日期设成指定日期)

-t (检查备份文件内的每个文件是否正确无误)

-u (更新较新的文件到压缩文件内)

-w (在文件名称里加入版本号,本参数仅在vms操作系统下有效)

-x (压缩时排除符合条件的文件)

-x (不保存额外的文件属性)

-y (直接保存符号链接)

-z (给压缩文件加上注释)

-$ (保存第一个被压缩文件所在磁盘的卷册名称)

-压缩效率 (压缩效率是一个介于1-9的数值)

#zip 1.zip 1.txt (将1.txt文件压缩为1.zip文件,缺省为不删除原文件)

#zip -r file.zip text (text文件夹下有多个文件,如果不加-r参数,zip会只将text文件夹压缩,压缩包内没有其他文件。使用-r参数后,zip会将所有文件连同text文件夹一同压缩)

#unzip [选项] 压缩文件名 (此命令为zip包解压缩命令)

-x (文件列表解压缩文件,但不包括指定的file文件)

-v (查看压缩文件目录,但不解压)

-t (测试文件有无损坏,但不解压)

-d 目录 (把压缩文件解压到指定目录)

-z (只显示压缩文件的注解)

-n (不覆盖已经存在的文件)

-o (覆盖已经存在的文件且不要求用户认证)

-j (不重建文档的目录结构,把所有文件解压到同一目录下)

9,.bin文件的用法

(1),chmod u+x name.bin

(2),./name.bin

七、系统监视与进程管理

1,使用who命令查看在线用户

 在linux系统中,who命令用来显示当前登录到系统的每个用户的注册名、终端类型、注册时间和远程主机名。

#who [-humqsw] [--help] [--version] [am i] [记录文件]

-h或heading (显示各栏位的标题信息列)

-u或-i或--idle (显示闲置时间,若该用户在一分钟之前有任何动作,将标示成“.”号,如已超过24小时没有任何动作,则标示出“old”字符串.-i将在新版本中弃用,一般使用-u)

-m (与“am i”字符串相同)

-q或--count (只显示登入系统的帐号名称和总人数)

-w或-t或--mesg或--message或--writable (显示用户的状态信息栏,其中{+:允许写信息;-:不允许写信息;?:不能找到终端设备)

--help (帮助)

--version (显示版本)

-s (此参数仅负责解决其他版本兼容问题)

#who (查看在线用户)

#who am i (显示运行who的用户名、登录终端和登录时间)

#who -uh (显示登录用户的详细信息)

 who命令标题栏意义

        标题             说明

        name         用户登录帐号

        line         用户登录使用终端

        time         用户登录时间

        idle         用户空闲时间

        pid          用户登录shell的进程id

        comment      备注

2,使用w命令查看用户的行为

 w命令用于显示登录到系统的用户情况和用户的行为,它比who命令功能更强大,显示的统计数据更加详细科学,可以显示出用户当前正在进行的工作。

#w [-husfv] [user]

-h (不显示标题)

-u (列出当前进程和cpu时间时忽略用户名。这主要是用于执行su命令后的情况)

-s (使用短模式,不显示登录时间、jcpu和pcpu时间)

-f (切换显示from项,也就是远程主机名项。默认值是不显示主机名,系统管理员可以修改源文件使显示该项成为默认值)

-v (显示版本信息)

user (只显示指定用户的情况)

#w (使用w命令显示登录到系统的用户情况)

18:39:27 up 35 min,  3 users,  load average: 0.00, 0.01, 0.00

user     tty      from              login@   idle   jcpu   pcpu what

xu       tty1     -                18:04   34:49   0.01s  0.01s login -- xu    

xu       tty7     :0               18:04    0.00s 14.13s  1.52s /usr/bin/gnome-session

xu       pts/0    :0.0             18:05    0.00s  0.10s  1.88s gnome-terminal

第一行四项基含义如下:

18:39:27 (当前时间,表示执行w命令的时间)

up 35 min (表示该系统已运行35分钟)

3 users (表示当前有3个用户登录该系统)

load average (表示系统平均负载指数,其中“0.00”、“0.10”和“0.00”分别表示最近1秒、5秒和15秒的平均负载)

第二行八项如下:

user (登录的用户帐号名,如果该用户重复登录,该帐号名就会重复出现)

tty (用户登录的终端代号)

from (显示用户从何处登录。如果是本地,则此字段为“-”,如果是远程,则显示远程主机的ip地址或主机名。“:0.0”表示用户是从xwindows以文本模式登录的)

login@ (表示该用户登录的时间)

idle (表示用户闲置时间。这是一个计时器,一旦用户执行任何操作,该计时器就会被重置)

jcpu (jcpu时间指的是和该终端{tty}连接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但包括当前正在运行的后台作业占用的时间)

pcpu (pcpu时间是指当前进程{即在what项中显示的进程}所占用的时间)

what (该终端当前进程的命令名)

3,top命令

top命令用来显示执行中的程序进程,获得内存、交换分区和cpu的使用率等信息,使用权限是所有用户。top命令是一个动态显示过程,即可以通过用户按

键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序。top命令提供了实时的对系统处理器的状态监视,该命令的很多特性都可

以通过交互式命令或者在个人定制文件中设定。

#top [-dqcssi]

-d (指定每两次屏幕信息刷新之间的时间间隔,用户可以使用s交互命令来改变)

-q (使top没有任何延迟地刷新。如果调用程序有root权限,top将以尽可能高的优先级运行)

-c (显示整个命令行而不是只显示命令名)

-s (使top命令在安全模式中运行,这将去除交互命令所带来的潜在危险)

-s (指定累计模式)

-i (使top不显示任何闲置或僵死进程)

#top (显示执行中的进程,获得内存、交换分区、cpu的使用率等信息)

top - 10:48:11 up 2:55, 3 users, load average: 1.00,0.73,0.52

tasks: 139 total,   2 running, 135 sleeping,   1 stopped,   1 zombie

cpu(s):  2.6%us,  1.2%sy,  0.0%ni, 96.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

mem:   2074872k total,   553528k used,  1521344k free,    24808k buffers

swap:  2096472k total,        0k used,  2096472k free,   277016k cached

pid user pr ni virt res shr s %cpu %mem time+ command

2768 root 20 0 293m 14m 7552 r 4 0.7 1:12.27 x

3090 xu 20 0 113m 19m 12m s 2 1.0 0:05.84 gnome-terminal

2950 xu 20 0 18752 5500 4408 s 1 0.3 0:03.62 gnome-screensav

3386 xu        20   0  310m  56m  27m s    1  2.8   1:09.84 firefox-bin

第一行:当前时间、系统启动时间、当前登录用户数、平均负载,各字段意义与w命令相同。

每二行,进程信息:已启动的总数、正在运行的、挂起的、已停止的、僵死的。

第三行,cpu使用情况:用户占用、系统占用、用户使用比、闲置比等。

第四行,物理内存使用情况:总数、已使用、未使用、缓冲区占用。

第五行,交换分区使用情况:总数、已使用、未使用、用于高速缓存的大小。

第六行:

pid (进程标示号,process id)

user (进程属主)

pr (进程优先级)

ni (进程优先级数值)

virt (进程占用的虚拟内存值)

res (进程占用的物理内存值)

shr (进程使用的共享内存值)

s (进程的状态,其中s表示休眠,r表示正在运行,z表示僵死,n表示进程优先级是负数)

%cpu (该进程占用的cpu使用率)

%mem (该进程占用的物理内存使用率)

time+ (该进程启动后占用的总的cpu时间)

command (进程启动的命令名称)

 top交互命令:

空格 (立即刷新)

p (根据cpu使用大小排序)

m (根据内存使用大小排序)

t (根据时间或累计时间排序)

m (切换显示内存信息)

t (切换显示进程和cpu状态信息)

c (切换显示命令名称和完整命令行)

u (输入用户名,可监控指定用户的进程)

w (将当前设置写入~/.toprc文件中,这是写top配置文件的推荐方法)

q (退出top命令)

4,使用free命令查看内存使用情况:

#free [-b|k|m] [-s delay] [-otv]

-b|k|m (分别以字节、k字节和m字节为单位显示内存使用情况)

-s delay (显示每隔多少秒刷新一次)

-t (显示内存总和)

-o (不显示缓冲区调节列)

#free -b -s5 (以字节为单位显示,每5秒刷新一次)

5,使用ps命令管理进程

 linux系统包括3种不同的进程,每种进程都有自己的特点和属性。交互进程是由一个shell启动的进程,它即可以在前台运行,也可以在后台运行。批处理进程和终端没有联系,是一个进程序列。监控进程(也称守护进程)是linux启动时的进程,并在后台运行。

#ps 参数

-e (显示所有进程)

-f (全格式)

-h (不显示标题)

-l (长格式)

-w (宽输出)

-a (显示终端上的所有进程,包括其他用户的进程)

-u (显示进程属主的用户名和其他详细信息,不加此参数显示为uid且没有其他信息)

-r (只显示正在运行的进程)

-x (显示不在终端上的进程,即没有控制终端的进程)

-pids (只列出指定进程的情况,各进程id间用,号隔开,该进程id必须在参数的最后一个选项后面紧接着给出,不能空格)

 使用“#ps -aux”可以显示最详细的进程情况。

[root@scb9 xu]# ps -aux | more

user       pid %cpu %mem    vsz   rss tty      stat start   time command

root         1  0.0  0.0   1948   736 ?        ss   20:26   0:01 /sbin/init

root         2  0.0  0.0      0     0 ?        s (on|off在指定的运行级别开启或关闭服务,不指定运行级别是,默认为3、4、5。reset在指定的运行级别重置服务,使其返回系统启动时的状态,resetpriorities重置优先级)

#chkconfig --list (显示由chkconfig管理的所有服务)

#chkconfig --list atd (显示atd服务在所有运行级别的运行状态)

#chkconfig --level 3 atd reset (重置atd服务)

 可以使用service命令启动、终止以及重启守护进程。注:该命令执行后立即生效。

#service 服务名称 {start|stop|restart|status}

#service atd stop (终止atd守护进程)

 可以使用"/etc/init.d/服务名",启动、终止以及重启守护进程。注:该命令主执行后立即生效。

#/etc/init.d/服务名 {start|stop|restart|condrestart|configtest|status}

八、系统信息相关命令

1,查看系统内核

/etc/redhat-release (管理员可以修改这里的内容)

/etc/issue

2,查看cpu信息

/proc/cpuinfo (processor 0 为一个u, 1为两个,flags表示超线程)

3,查看操作系统信息

#uname

4,显示/设置当前时间

#date

5,显示系统运行时间

#uptime

6,显示机器的核心构架(如i386)

arch

7,显示终端名

#tty

8,显示登录/登出在履历

#last

9,显示非法登录信息

#lastb

10,显示当前键盘配置

#dumpkeys

11,变更键盘配置

#loadkeys

12,显示系统启动消息

#dmesg

13,保存输入输出到文件

#script
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  fedora