Linux 学习笔记 LINUX常用的操作命令和命令行编辑快捷键 终端快捷键: Ctrl a/Home 切换到命令行开始 Ctrl e/End 切换到命令行结束 Ctrl l 清除屏幕内容的效果相当于 clear Ctrl u 去除剪切光标前的内容 Ctrl k 切割去除光标后的内容 Ctrl y 粘贴刚刚删除的字符 Ctrl r 查找历史命令 (这个很好用,输入关键字调出之前的命令) Ctrl c 终止命令 ctrl o 重复执行命令 Ctrl d 退出 shell,logout Ctrl z 转移到后台运行,但当前用户退出后将终止 Ctrl t 逆转光标及其前面的字符位置,将光标移动到下一个字符 Alt t 交换当前和以前单词的位置 Alt d 切割光标后的单词 Ctrl w 剪切光标位置前的一个词(以空间、标点等为分隔符) Ctrl (x u) 按住 Ctrl 同时先按 x 和 u,撤销刚才的操作 Ctrl s 锁住终端 Ctrl q 解锁终端 !! 重复执行最后一项命令 history 显示您执行的所有编号 历史命令。这个可以合作!编辑执行某个命令 !$ 最近显示系统的参数 最后这个更有用,比如我先用 cat /etc/sysconfig/network-scripts/ifconfig-eth然后我想用 vim 编辑。 一般的做法是先用↑ 显示最后一个命令,然后使用它 Home 移动到命令前,删除 cat,然后再输入 vim 命 令。其实完全可以用 vim !$来代替。 gnome快捷键 Alt F1 类似 Windows 下的 Win 键,在 GNOME 中打开"应用程序"菜单(Applications) Alt F2 类似 Windows 下的 Win R 组合键,在 GNOME 应用程序在中间运行 Ctrl Alt D 类似 Windows 下的 Win D 组合键,显示桌面 Ctrl Alt L 锁定桌面,启动屏幕保护程序 Alt Tab 同 Windows 下的 Alt Tab 在不同程序窗口之间切换组合键 PrintScreen 全屏抓图 Alt PrintScreen 当前窗口抓图 Ctrl Alt → / ← 切换到不同的工作台 Ctrl Alt Shift → / ← 将当前窗口移动到不同的工作台 Ctrl Alt Fn 终端 N 或模拟终端 N(n 和 N 为数字 1-6) 一、 常用命令
Ctrl Alt F7 返回桌面 快捷键操作窗口 Alt F4 关闭窗口 Alt F5 取消最大化窗口 (恢复窗户原有尺寸) Alt F7 移动窗口 (注: 窗户最大化无效) Alt F8 改变窗口大小 (注: 窗户最大化无效) Alt F9 最小化窗口 Alt F10 最大化窗口 Alt 空格键 控制菜单打开窗口 (点击出现在窗口左上角图标的菜单) 文件浏览器 Ctrl N 新建窗口 Ctrl Shift W 关闭所有文件浏览器 Ctrl 1/2 改变文件夹视图的查看方式,图标视图/列表视图 Alt → / ←后退/前进 Alt ↑/↓ 移动到父文件夹/选择的文件夹 Alt Home 直接移动到主文件夹 F9 开关显示隐藏 Nautilus 侧边栏 Ctrl H 显示隐藏文件(切换键) Shift Ctrl N 新文件夹, 很有用 Alt Enter 查看选择文件/文件夹的属性,而不是单击右键选择属性 Ctrl Page Up 上一个标签 Ctrl Page Down 下一个标签 Alt N 切换到第 N 个标签(N 为数字) 关机和重启命令 Shutdown Reboot Halt poweroff grep和管道符 昨天的时候 leader 给我一个问题: 找出文件夹下包含的内容 “aaa” 同时不包含 “bbb然后重新生成文件。只能使用一行命令。 我对 Linux 是白痴,下班后才开始接触,只有那些常用的命令才能使用。这个问题对我来说就有了 点难度,我只是大概知道找文件用。 grep ,不知道别的。但没关系,用 Google ,查找到 grep 完整用法: 1、grep -l ‘boss’ * 显示所有内容 boss 的文件名。 2、grep -n ‘boss’ file 在匹配行之前加行号。 3、grep -i ‘boss’ file 显示匹配行,boss 不区分大小写。 4、grep -v ‘boss’ file 显示所有不匹配行。 5、grep -q ‘boss’ file 找到匹配行,但不显示,但可以检查 grep 退出状态 成功匹配) 6、grep -c ‘boss’ file 只显示匹配行数(包括) 0)。
7、grep “$boss” file 扩展变量 boss 值再执行命令。 8、ps -ef|grep “^*user1′′ 搜索 user1 即使它前面有零个或多个空间。 9、ps -e|grep -E ‘grant_server|commsvr|tcpsvr|dainfo’ 找到多个字符串的匹配(grep -E 相当于 egrep) (来源:蓝森林) 了解了 grep 参数之后,问题解决了一半,因为合格的文件可以搜索。不过光有 grep 还是 不,因为搜索到的文件名应该作为参数传递给 generate 命令。OK,接下来,管道符出现了。 即使像我一样对 Linux 只有一点了解的人经常使用管道符,比如|”,示例: ls -a | more 。但是对 我不知道管道符的具体意义和它做了什么。没关系,Google 找一些资料: 利用 Linux 提供的管道符|将两个命令分开,管道符左命令的输出将作为管道符右命令的输入。 连续使用管道意味着第一个命令的输出将作为第二个命令的输入,第二个命令的输出将作为第三个命令 按此类推。 所以搜索的时候可以这样写: grep -rl “aaa” * | grep -v “bbb” 这样右边的命令就可以从之前的结果中筛选出来。然后就有了 generate 这是生成文件的命令格式 样的: generate 文件名 但如果直接使用 generate grep -rl “aaa” * | grep -v “bbb” 会出错,因为命令会从左到右执行,这个 命令就会把 grep 以文件名为例。怎么办呢?此时使用 · (键盘上的数字键 1 旁边的符 号,和“~在按钮上)替换命令,使用 · 把后面的 grep 把命令包起来,这样: generate ·grep -rl “aaa” * | grep -v “bbb”· 然后就完成了。 工作一段时间后,我越来越喜欢了 Linux 哲学,它有很多命令,看起来不那么强大,但如果 如果你用脑子把这些命令结合起来,就能实现 有时候你会忍不住惊呼很多意想不到的功能:真的 是太 coooool 了! 像我这样的被子 Windows 对于那些习惯了傻瓜操作的人来说,这是一个好消息,他们将来应该打开更多 动生锈了的大脑。如果只是用电脑,还是 Windows 好用,但 对于程序员来说,最好多玩 Linux。 BTW,现在越来越喜欢用了。 VIM 虽然刚开始用的时候觉得是记事本囧~ 以前总听说真 的牛人编码都是用记事本编写的”,当时就觉得这些人实在太厉害了,代码提示和自动补全都不用,现在 想想看,也许外行看到他们使用灵活 强 大的 VIM 或者 EMACS 了吧。_ 我的补充: 查找包含 logField 又包含 open 的文件: 用 grep “logFileId” *.tbc|grep “open” 二、 磁盘管理 文件系统配置文件 /etc/filesystems:系统指定的测试挂载文件系统类型 /proc/filesystems:Linux 系统加载的文件系统类型 /lib/modules/2.6.18-274.el5/kernel/fs/ 目录驱动文件系统类型 /etc/fstab /etc/mtab linux 文件类型的颜色 linux文件颜色的含义:蓝色代表目录 绿色代表可执行文件 红色表示压缩文件 浅蓝色表示链接文件 灰 颜色表示其他文件 红闪烁表示链接文件有问题 黄色表示设备文件
蓝色文件-目录-蓝色文件-目录-蓝色文件-目录-目录-蓝色文件-蓝色文件-目录-蓝色文件-目录-蓝色文件-蓝色文件-目录-目录-蓝色文件-目录-目录-目录-蓝色文件-目录-蓝色文件-蓝色文件-蓝色文件-目录-蓝色文件-目录-目录-目录-蓝色文件-目录-目录-目录-目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录目录 白色文件-一般文件,如文本文件、配置文件、源代码文件等 浅蓝色文件----------链接文件,主要是使用 ln 命令建立的文件 绿色文件-可执行文件、可执行程序 红色文件-压缩文件或包文件 Linux 下面用字符表示的文件类型 -:普通文件 d:目录文件 l:链接文件 b:块设备文件 c:字符设备文件 p:管道文件 操作命令的文件系统 df:列出文件系统整体磁盘的使用情况 [root@centos57 ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/VolGroup00-LogVol00 /dev/sda1 tmpfs [root@centos57 ~]# df -i 16G 99M 1005M 4.2G 11G 13M 81M 0 1005M 28% / 14% /boot 0% /dev/shm Inode (I)已用 (I)可用 (I)已用% 挂载点 /dev/mapper/VolGroup00-LogVol00 文件系统 4186112 /dev/sda1 26104 tmpfs 257210 .host:/ 0 du:列出目录所占间 du -sh 显示当前目录大小 du –sh / 显示/目录下的所有目录大小 dumpe2fs:显示当前的磁盘状态 ln:连接文件(快捷方式) ln –sf 源文件 目标文件 154441 4031671 4% / 1% /boot 1% /dev/shm - /mnt/hgfs 36 1 0 26068 257209 0 不加任何参数就进行连接,就是 hard link,加上-s 就是 Symbolic link,hard link 不支持目录和跨文件系统。 Fdisk Fdisk 不支持大于 2T 的磁盘 Fdisk –l 显示系统中的所有分区内容 [root@centos57 ~]# fdisk -l Disk /dev/sda: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders 总扇区数,可以和下面的最后扇区数比较,看剩余
Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot /dev/sda1 * /dev/sda2 [root@centos57 ~]# fdisk /dev/sda2 System 83 Linux 8e Linux LVM Start End Blocks Id 1 13 104391 14 2610 20860402+ Parted:2T以上磁盘分区工具 支持大于 2T 的磁盘,2T 以下的最好还是用 Fdisk 来分区。 [root@centos57 aixi]# parted /dev/hda print Model: VMware Virtual IDE Hard Drive (ide) Disk /dev/hda: 2147MB Sector size (logical/physical): 512B/512B Partition Table: msdos Number 1 Start End Size Type 32.3kB 101MB 101MB 主分区 ext3 101MB 357MB 256MB 主分区 linux-swap File system 标志 2
parted /dev/hda rm 2 删除第 2 个分区
parted /dev/hda mkpart primary ext3 120MB 200MB 创建分区,primary 代表主分区,还可以是
extended 扩展分区,logical 逻辑分区;ext3 代表分区类型,120MB 是开始位置,最好是接上一分区的结束位 置,200M 是结束位置 partprobe :更新分区表/磁盘 用于重读分区表,当出现删除文件后,出现仍然占用空间。可以 partprobe 在不重启的情况下重读分区 # partprobe 这个命令执行完毕之后不会输出任何返回信息,你可以使用 mke2fs 命令在新的分区上创建文件系统。 Mkfs:磁盘格式化 Mkfs –t 文件系统格式 设备文件名(盘符) [root@centos57 ~]# mkfs -t ext3 /dev/hda1 e2label:设置磁盘卷标 e2label 设备名称 新 label 名称,可以用 dumpe2fs 查看卷标 [root@centos57 ~]# e2label /dev/hda1 aixi Mount:挂载磁盘 命令格式: mount [-t vfstype] [-o options] device dir mount –o remount,rw,auto / 重新挂载 mount –n –o remount,rw / 重新挂载根目录,设置为可读写 其中: 1.-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有: 光盘或光盘镜像:iso9660 DOS fat16 文件系统:msdos Windows 9x fat32 文件系统:vfat Windows NT ntfs 文件系统:ntfs Mount Windows 文件网络共享:smbfs
UNIX(LINUX) 文件网络共享:nfs 2.-o options 主要用来描述设备或档案的挂接方式。常用的参数有: loop:用来把一个文件当成硬盘分区挂接上系统 ro:采用只读方式挂接设备 rw:采用读写方式挂接设备 iocharset:指定访问文件系统所用字符集 3.device 要挂接(mount)的设备。 4.dir 设备在系统上的挂接点(mount point)。 挂接光盘镜像文件 1、从光盘制作光盘镜像文件。将光盘放入光驱,执行下面的命令。 #cp /dev/cdrom /home/sunky/mydisk.iso 或 #dd if=/dev/cdrom of=/home/sunky/mydisk.iso 注:执行上面的任何一条命令都可将当前光驱里的光盘制作成光盘镜像文件/home/sunky/mydisk.iso 2、将文件和目录制作成光盘镜像文件,执行下面的命令。 #mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/ mydir 注:这条命令将/home/sunky/mydir 目录下所有的目录和文件制作成光盘镜像文件 /home/sunky/mydisk.iso,光盘卷标为:mydisk 3、光盘镜像文件的挂接(mount) #mkdir /mnt/vcdrom 注:建立一个目录用来作挂接点(mount point) #mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom 注:使用/mnt/vcdrom 就可以访问盘镜像文件 mydisk.iso 里的所有文件了。 挂接移动硬盘 对 linux 系统而言,USB 接口的移动硬盘是当作 SCSI 设备对待的。插入移动硬盘之前,应先用 fdisk –l 或 more /proc/partitions 查看系统的硬盘和硬盘分区情况。 [root at pldyrouter /]# fdisk -l Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes 255 heads, 63 sectors/track, 8924 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 1 4 32098+ de Dell Utility /dev/sda2 * 5 2554 20482875 7 HPFS/NTFS /dev/sda3 2555 7904 42973875 83 Linux /dev/sda4 7905 8924 8193150 f Win95 Ext’d (LBA) /dev/sda5 7905 8924 8193118+ 82 Linux swap 在这里可以清楚地看到系统有一块 SCSI 硬盘/dev/sda 和它的四个磁盘分区/dev/sda1 – /dev/sda4, /dev/sda5 是分区/dev/sda4 的逻辑分区。接好移动硬盘后,再用 fdisk –l 或 more /proc/partitions 查看系统 的硬盘和硬盘分区情况 [root at pldyrouter /]# fdisk -l Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes 255 heads, 63 sectors/track, 8924 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System /dev/sda1 1 4 32098+ de Dell Utility /dev/sda2 * 5 2554 20482875 7 HPFS/NTFS /dev/sda3 2555 7904 42973875 83 Linux /dev/sda4 7905 8924 8193150 f Win95 Ext’d (LBA) /dev/sda5 7905 8924 8193118+ 82 Linux swap Disk /dev/sdc: 40.0 GB, 40007761920 bytes 255 heads, 63 sectors/track, 4864 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdc1 1 510 4096543+ 7 HPFS/NTFS /dev/sdc2 511 4864 34973505 f Win95 Ext’d (LBA) /dev/sdc5 511 4864 34973473+ b Win95 FAT32 大家应该可以发现多了一个 SCSI 硬盘/dev/sdc 和它的两个磁盘分区/dev/sdc1?、/dev/sdc2,其中/dev/sdc5 是/dev/sdc2 分区的逻辑分区。我们可以使用下面的命令挂接/dev/sdc1 和/dev/sdc5。 #mkdir -p /mnt/usbhd1 #mkdir -p /mnt/usbhd2 注:建立目录用来作挂接点(mount point) #mount -t ntfs /dev/sdc1 /mnt/usbhd1 #mount -t vfat /dev/sdc5 /mnt/usbhd2 注:对 ntfs 格式的磁盘分区应使用-t ntfs 参数,对 fat32 格式的磁盘分区应使用-t vfat 参数。若汉字 文件名显示为乱码或不显示,可以使用下面的命令格式。 #mount -t ntfs -o iocharset=cp936 /dev/sdc1 /mnt/usbhd1 #mount -t vfat -o iocharset=cp936 /dev/sdc5 /mnt/usbhd2 linux 系统下使用 fdisk 分区命令和 mkfs 文件系统创建命令可以将移动硬盘的分区制作成 linux 系统所特 有的 ext2、ext3 格式。这样,在 linux 下使用就更方便了。使用下面的命令直接挂接即可。 #mount /dev/sdc1 /mnt/usbhd1 挂接U盘 和 USB 接口的移动硬盘一样对 linux 系统而言 U 盘也是当作 SCSI 设备对待的。使用方法和移动硬盘完全 一样。插入 U 盘之前,应先用 fdisk –l 或 more /proc/partitions 查看系统的硬盘和硬盘分区情况。 [root at pldyrouter root]# fdisk -l Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes 255 heads, 63 sectors/track, 8924 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 1 4 32098+ de Dell Utility /dev/sda2 * 5 2554 20482875 7 HPFS/NTFS /dev/sda3 2555 7904 42973875 83 Linux /dev/sda4 7905 8924 8193150 f Win95 Ext’d (LBA) /dev/sda5 7905 8924 8193118+ 82 Linux swap 插入 U 盘后,再用 fdisk –l 或 more /proc/partitions 查看系统的硬盘和硬盘分区情况。 [root at pldyrouter root]# fdisk -l Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes
255 heads, 63 sectors/track, 8924 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 1 4 32098+ de Dell Utility /dev/sda2 * 5 2554 20482875 7 HPFS/NTFS /dev/sda3 2555 7904 42973875 83 Linux /dev/sda4 7905 8924 8193150 f Win95 Ext’d (LBA) /dev/sda5 7905 8924 8193118+ 82 Linux swap Disk /dev/sdd: 131 MB, 131072000 bytes 9 heads, 32 sectors/track, 888 cylinders Units = cylinders of 288 * 512 = 147456 bytes Device Boot Start End Blocks Id System /dev/sdd1 * 1 889 127983+ b Win95 FAT32 Partition 1 has different physical/logical endings: phys=(1000, 8, 32) logical=(888, 7, 31) 系统多了一个 SCSI 硬盘/dev/sdd 和一个磁盘分区/dev/sdd1,/dev/sdd1 就是我们要挂接的 U 盘。 #mkdir -p /mnt/usb 注:建立一个目录用来作挂接点(mount point) #mount -t vfat /dev/sdd1 /mnt/usb 注:现在可以通过/mnt/usb 来访问 U 盘了, 若汉字文件名显示为乱码或不显示,可以使用下面的命令。 #mount -t vfat -o iocharset=cp936 /dev/sdd1 /mnt/usb 挂接Windows文件共享 Windows 网络共享的核心是 SMB/CIFS,在 linux 下要挂接(mount)windows 的磁盘共享,就必须安装和使 用 samba 软件包。现在流行的 linux 发行版绝大多数已经包含了 samba 软件包,如果安装 linux 系统时未安 装 samba 请首先安装 samba。当然也可以到 www.samba.org 网站下载…新的版本是 3.0.10 版。 当 windows 系统共享设置好以后,就可以在 linux 客户端挂接(mount)了,具体操作如下:
mkdir –p /mnt/samba
注:建立一个目录用来作挂接点(mount point)
mount -t smbfs -o username=administrator,password=pldy123 //10.140.133.23/c$ /mnt/samba 注:administrator 和 pldy123 是 ip 地址为 10.140.133.23 windows 计算机的一个用户名和密码,c$是这
台计算机的一个磁盘共享 如此就可以在 linux 系统上通过/mnt/samba 来访问 windows 系统磁盘上的文件了。以上操作在 redhat as server 3、redflag server 4.1、suse server 9 以及 windows NT 4.0、windows 2000、windows xp、windows 2003 环境下测试通过。 挂接UNIX系统NFS文件共享 类似于 windows 的网络共享,UNIX(Linux)系统也有自己的网络共享,那就是 NFS(网络文件系统),下面 我们就以 SUN Solaris2.8 和 REDHAT as server 3 为例简单介绍一下在 linux 下如何 mount nfs 网络共享。 在 linux 客户端挂接(mount)NFS 磁盘共享之前,必须先配置好 NFS 服务端。 1、Solaris 系统 NFS 服务端配置方法如下: (1)修改 /etc/dfs/dfstab, 增加共享目录 share -F nfs -o rw /export/home/sunky (2)启动 nfs 服务
/etc/init.d/nfs.server start
(3)NFS 服务启动以后,也可以使用下面的命令增加新的共享 # share /export/home/sunky1
share /export/home/sunky2
注:/export/home/sunky 和/export/home/sunky1 是准备共享的目录 2、linux 系统 NFS 服务端配置方法如下: (1)修改 /etc/exports,增加共享目录 /export/home/sunky 10.140.133.23(rw) /export/home/sunky1 (rw) /export/home/sunky2 linux-client(rw) 注:/export/home/目录下的 sunky、sunky1、sunky2 是准备共享的目录,10.140.133.23、、 linux-client 是被允许挂接此共享 linux 客户机的 IP 地址或主机名。如果要使用主机名 linux-client 必须在服务端主机 /etc/hosts 文件里增加 linux-client 主机 ip 定义。格式如下: 10.140.133.23 linux-client (2)启动与停止 NFS 服务 /etc/rc.d/init.d/portmap start (在 REDHAT 中 PORTMAP 是默认启动的) /etc/rc.d/init.d/nfs start 启动 NFS 服务 /etc/rc.d/init.d/nfs stop 停止 NFS 服务 注:若修改/etc/export 文件增加新的共享,应先停止 NFS 服务,再启动 NFS 服务方能使新增加的共享 起作用。使用命令 exportfs -rv 也可以达到同样的效果。 3、linux 客户端挂接(mount)其他 linux 系统或 UNIX 系统的 NFS 共享
mkdir –p /mnt/nfs
注:建立一个目录用来作挂接点(mount point) #mount -t nfs -o rw 10.140.133.9:/export/home/sunky /mnt/nfs 注:这里我们假设 10.140.133.9 是 NFS 服务端的主机 IP 地址,当然这里也可以使用主机名,但必须 在本机/etc/hosts 文件里增加服务端 ip 定义。/export/home/sunky 为服务端共享的目录。 如此就可以在 linux 客户端通过/mnt/nfs 来访问其它 linux 系统或 UNIX 系统以 NFS 方式共享出来的文件 了。以上操作在 redhat as server 3、redflag server4.1、suse server 9 以及 Solaris 7、Solaris 8、Solaris 9 for x86&sparc 环境下测试通过。 权限问题: 假设 server 端的使用者 jack, user id 为 1818, gid 为 1818, client 端也有一个使用者 jack,但是 uid 及 gid 是 1818。client 端的 jack 希望能完全读写 server 端的 /home/jack 这个目录。server 端的 /etc/exports 是 这样写的: /home/jack *(rw,all_squash,anonuid=1818,anongid=1818) 这个的配置文件的意思是,所有 client 端的使用者存取 server 端 /home/jack 这 目录时,都会 map 成 server 端的 jack (uid,gid=1818)。我 mount 的结果是
- client 端的 root 可以完全存取该目录, 包括读、写、杀…等
- client 端的 jack (uid,gid=1818) 我可以做: rm -rf server_jack/* cp something server_jack/ mkdir server_jack/a umount:将文件设备卸载 [root@centos57 ~]# umount /dev/hda1 [root@centos57 ~]# umount /aixi 用设备文件名来卸载 用挂载点来卸载
umount: /aixi: device is busy 如果提示设备忙,不急可以使用如下命令卸载 #umount -l /mnt/hda1 选项 –l 并不是马上 umount,而是在该目录空闲后再 umount。 如果比较急,可用如下命令: #umount -f /mnt/hda1 -f 代表强制卸载 如果还不行,可使用 fuser -m –v /dev/hda1 来查询是哪些程序在占用,结束这些程序进程即可卸载 [root@centos57 aixi]# sync && fuser -m /dev/hda1 –k 使用这条命令后一定可以卸载 交换分区 交换分区最大容量为 64G,最多只能建 32 个, 创建交换分区 #fdisk /dev/hdan+容量pt(修改系统 ID)分区号82pw #mkswap /dev/hda2(以上划分的分区号) 构建 swap 格式 #swapon /dev/hda2 加载即完成增加 swap #swapon –s 显示目前使用的 Swap 设备 创建交换文件
dd if=/dev/hda1 of=/aixi/swap bs=1M count=64
#mkswap /aixi/swap #swapon /aixi/swap 完成 取消交换分区或者交换文件 #swapon –s 显示目前使用的 Swap 设备 #swapoff /aixi/swap #swapoff /dev/hda2 #free –m 查看 三、 用户管理 用户和用户组操作命令 Id Finger Pwck 检查/etc/passwd 配置文件内的信息与实际主文件夹是否存在,还可比较/etc/passwd 和/etc/shadow 的信 息是否一致,另外如果/etc/passwd 中的数据字段错误也会提示。 Grpck 和 pwck 功能相近,这是检查用户组的。 创建大文件
Groups newgrp useradd usermod usermod 不仅能改用户的 SHELL 类型,所归属的用户组,也能改用户密码的有效期,还能改登录名。usermod 如此看来就 是能做到用户帐号大转移;比如我把用户 A 改为新用户 B; usermod [-u uid [-o]] [-g group] [-G group,…] [-d 主目录 [-m]] [-s shell] [-c 注释] [-l 新名称] [-f 失效日] [-e 过期日] [-p 密码] [-L|-U] 用户名 usermod 命令会参照你命令列上指定的部份修改系统帐号档。下列为 usermod 可选用的参数。 -c comment 更新用户帐号 password 档中的注解栏,一般是使用 chfn(1)来修改。 -d home_dir 更新用户新的登入目录。如果给定-m 选项,用户旧目录会搬到新的目录去,如旧目录不存在则建个新的。 -e expire_date 加上用户帐号停止日期。日期格式为 MM/DD/YY. -f inactive_days 帐号过期几日后永久停权。当值为 0 时帐号则立刻被停权。而当值为-1 时则关闭此功能。预设值为-1。 -g initial_group 更新用户新的起始登入用户组。用户组名须已存在。用户组 ID 必须参照既有的的用户组。用户组 ID 预设 值为 1。 -G group,[…] 定义用户为一堆 groups 的成员。每个用户组使用","区格开来,不可以夹杂空白字元。用户组名同-g 选项的 限制。如果用户现在的用户组不再此列,则将用户由该用户组中移除。 -llogin_name 变更用户login时的名称为login_name。其它不变。特别是,用户目录名应该也会跟着更动成新的登入名。 -sshell 指定新登入shell。如此栏留白,系统将选用系统预设shell。 -u uid 用户 ID 值。必须为唯一的 ID 值,除非用-o 选项。数字不可为负值。预设为最小不得小于/etc/login.defs 中定义的 UID_MIN 值。0 到 UID_MIN 值之间是传统上保留给系统帐号使用。用户目录树下所有的档案目录其 userID 会自动改变。放在 用户目录外的档案则要自行手动更动。 警告:usermod 不允许你改变正在线上的用户帐号名称。当 usermod 用来改变 userID,必须确认这名 user 没在电脑上执行任何 程序。你需手动更改用户的 crontab 档。也需手动更改用户的 at 工作档。采用 NISserver 须在 server 上更动相关的 NIS 设 定。 举个简单的例子,我们在前面说了关于 useradd 的工具,而 usermod 工具和 useradd 的参数差不多;两者不同之处在于 useradd 是添加,usermod 是修改; [root@localhost ~]# usermod -d /opt/linuxfish -m -l fishlinux -U linuxfish 注:把 linuxfish 用户名改为 fishlinux ,并且把其家目录转移到 /opt/linuxfish ; [root@localhost ~]# ls -la /opt/linuxfish/ 注:查看用户 fishlinux 的家目录下的文件及属主; 总用量 48 drwxr-xr-x drwxrwxrwx -rw-r–r– -rw-r–r– -rw-r–r– -rw-r–r– -rw-r–r– 3 fishlinux 29 root linuxfish root linuxfish linuxfish linuxfish linuxfish linuxfish 409611月 516:46. 409611月 516:48… 1 fishlinux 1 fishlinux 1 fishlinux 1 fishlinux 1 fishlinux 2411月 516:46.bash_logout 19111月 516:46.bash_profile 12411月 516:46.bashrc 561911月 516:46.canna 43811月 516:46.emacs
-rw-r–r– drwxr-xr-x -rw-r–r– -rw-r–r– [root@localhost~]#more /etc/passwd|grepfishlinux 注:查看有关fishlinux的记录; fishlinux❌512:512::/opt/linuxfish:/bin/bash 1 fishlinux linuxfish 120 11 月 5 16:46 .gtkrc 3 fishlinux linuxfish 4096 11 月 5 16:46 .kde 1 fishlinux linuxfish 0 11 月 5 16:46 mydoc.txt 1 fishlinux linuxfish 658 11 月 5 16:46 .zshrc 通过上面的例子,我们发现文件的用户组还没有变,如果您想改变为 fishlinux 用户组,如果想用通过 usermod 来修改,就要 先添加 fishlinux 用户组;然后用 usermod -g 来修改 ,也可以用 chown -R fishlinux:fishlinux /opt/finshlinux 来改; 警告:usermod 最好不要用它来改用户的密码,因为他在/etc/shadow 中显示的是明口令;修改用户的口令最好用 passwd ; userdel userdel 很简单,只有一个参数可选 -r ;如果加参数-r ,表示在删除用户的同时,一并把用户的家目录及本地邮件存储的目 录或文件也一同删除;比如我们现在有两个用户 bnnb 和 lanhaitun,其家目录都位于/home 目录中,现在我们来删除这两个 用户; [root@localhost~]#usermod-p123456fishlinux 注:修改fishlinux的口令是123456; [root@localhost~]#more/etc/shadow|grepfishlinux 注:查询/etc/shadow文件中fishlinux的口令;我们看到明显 是没有加密; fishlinux:123456:13092:0:99999:7::: [root@localhost~]#userdelbnnb 注:删除用户bnnb,但不删除其家目录及文件; [root@localhost ~]# ls -ld /home/bnnb 注:查看其家目录是否存在; drwxr-xr-x 14 501 501 4096 8 月 29 16:33 /home/bnnb 注:存在; [root@localhost ~]# ls -ld /home/lanhaitun 注:查看 lanhaitun 家目录是否存在; drwx------ 4 lanhaitun lanhaitun 4096 11 月 5 14:50 /home/lanhaitun 注:存在; [root@localhost~]#userdel-r lanhaitun 注:删除用户lanhaitun,其家目录及文件一并删除; [root@localhost ~]# ls -ld /home/lanhaitun 注:查看是否在删除 lanhaitun 用户的同时,也一并把其家目录和文件一 同删除; ls: /home/lanhaitun: 没有那个文件或目录 注:已经删除; 警告: 请不要轻易用-r 参数;他会删除用户的同时删除用户所有的文件和目录,切记;如果用户目录下有重要的文件,在删 除前请备份; 其实也有最简单的办法,但这种办法有点不安全,也就是直接在/etc/passwd 中删除您想要删除用户的记录;但最好不要这样 做,/etc/passwd 是极为重要的文件,可能您一不小心会操作失误; Groupadd groupmod groupdel 是用来删除用户组的; 语法格式:groupdel 用户组 比如: [root@localhost ~]# groupdel lanhaitun
passwd passwd 作为普通用户和超级权限用户都可以运行,但作为普通用户只能更改自己的用户密码,但前提是没有被 root 用户锁 定;如果 root 用户运行 passwd ,可以设置或修改任何用户的密码; passwd 命令后面不接任何参数或用户名,则表示修改当前用户的密码;请看下面的例子; 如果是普通用户执行 passwd 只能修改自己的密码; 如果新建用户后,要为新用户创建密码,则用 passwd 用户名 ,注意要以 root 用户的权限来创建; 普通用户如果想更改自己的密码,直接运行 passwd 即可;比如当前操作的用户是 beinan; passwd 几个比较重要的参数; [root@localhost ~]# passwd 注:没有加任何用户,我是用 root 用户来执行的 passwd 表示修改 root 用户的密码;下面 也有提示; Changing password for user root. New UNIX password: 注:请输入新密码; Retype new UNIX password: 注:验证新密码; passwd:allauthenticationtokensupdatedsuccessfully. 注:修改root密码成功; [root@localhost~]#passwdbeinan 注:更改或创建beinan用户的密码; Changing password for user beinan. New UNIX password: 注:请输入新密码; Retype new UNIX password: 注:再输入一次; passwd: all authentication tokens updated successfully. 注:成功; [beinan@localhost ~]$ passwd Changing password for user beinan. 注:更改 beinan 用户的密码; (current) UNIX password: 注:请输入当前密码; New UNIX password: 注:请输入新密码; Retype new UNIX password: 注:确认新密码; passwd: all authentication tokens updated successfully. 注:更改成功; [root@localhost beinan]# passwd --help Usage: passwd [OPTION…] -k, --keep-tokens -d, --delete -l, --lock -u, --unlock -f, --force -x, --maximum=DAYS root 权限操作; -n, --minimum=DAYS root 权限操作; keep non-expired authentication tokens 注:保留即将过期的用户在期满后能仍能使用; delete the password for the named account (root only) 注:删除用户密码,仅能以 root 权限操作; lock the named account (root only) 注:锁住用户无权更改其密码,仅能通过 root 权限操作; unlock the named account (root only) 注:解除锁定; force operation 注:强制操作;仅 root 权限才能操作; maximum password lifetime (root only) 注:两次密码修正的最大天数,后面接数字;仅能 minimum password lifetime (root only) 注:两次密码修改的最小天数,后面接数字,仅能
-w, --warning=DAYS root 权限操作; -i, --inactive=DAYS 掉,仅能以 root 操作; -S, --status 用户操作; –stdin number of days warning users receives before 注:在距多少天提醒用户修改密码;仅能 password expiration (root only) number of days after password expiration when an 注:在密码过期后多少天,用户被禁 account becomes disabled (root only) report password status on the named account (root only) read new tokens from stdin (root only) 注:查询用户的密码状态,仅能 root 比如我们让某个用户不能修改密码,可以用-l 参数来锁定: [root@localhost~]#passwd-lbeinan 注:锁定用户beinan不能更改密码; Locking password for user beinan. passwd: Success 注:锁定成功; [beinan@localhost~]#subeinan 注:通过su切换到beinan用户; [beinan@localhost~] p a s s w d 注 : b e i n a n 来 更 改 密 码 ; C h a n g i n g p a s s w o r d f o r u s e r b e i n a n . C h a n g i n g p a s s w o r d f o r b e i n a n ( c u r r e n t ) U N I X p a s s w o r d : 注 : 输 入 b e i n a n 的 当 前 密 码 ; p a s s w d : A u t h e n t i c a t i o n t o k e n m a n i p u l a t i o n e r r o r 注 : 失 败 , 不 能 更 改 密 码 ; 再 来 一 例 : 注 意 : 当 我 们 清 除 一 个 用 户 的 密 码 时 , 登 录 时 就 无 需 密 码 ; 这 一 点 要 加 以 注 意 ; c h a g e 修 改 用 户 密 码 有 效 期 限 的 命 令 ; c h a g e 用 语 法 格 式 : c h a g e [ − l ] [ − m 最 小 天 数 ] [ − M 最 大 天 数 ] [ − W 警 告 ] [ − I 失 效 日 ] [ − E 过 期 日 ] [ − d 最 后 日 ] 用 户 前 面 已 经 说 的 好 多 了 , 这 个 只 是 一 笔 带 过 吧 , 知 道 有 这 个 命 令 就 行 , 自 己 实 践 实 践 再 说 , 大 体 和 p s s w d 有 些 参 数 的 用 法 差 不 多 ; i d 工 具 : 查 询 用 户 所 对 应 的 U I D 和 G I D 及 G I D 所 对 应 的 用 户 组 ; i d 工 具 是 用 来 查 询 用 户 信 息 , 比 如 用 户 所 归 属 的 用 户 组 , U I D 和 G I D 等 ; i d 用 法 极 为 简 单 ; 我 们 举 个 例 子 说 明 一 下 ; 语 法 格 式 : i d [ 参 数 ] [ 用 户 名 ] 至 于 有 哪 些 参 数 , 自 己 查 一 下 i d − − h e l p 或 m a n i d ; 如 果 i d 后 面 不 接 任 何 参 数 和 任 何 用 户 , 默 认 显 示 当 前 操 作 用 户 的 用 户 名 、 所 归 属 的 用 户 组 、 U I D 和 G I D 等 ; 实 例 一 : 不 加 任 何 参 数 和 用 户 名 ; [ b e i n a n @ l o c a l h o s t ] passwd 注:beinan来更改密码; Changing password for user beinan. Changing password for beinan (current) UNIX password: 注:输入 beinan 的当前密码; passwd: Authentication token manipulation error 注:失败,不能更改密码; 再来一例: 注意: 当我们清除一个用户的密码时,登录时就无需密码;这一点要加以注意; chage 修改用户密码有效期限的命令; chage 用语法格式: chage [-l] [-m 最小天数] [-M 最大天数] [-W 警告] [-I 失效日] [-E 过期日] [-d 最后日] 用户 前面已经说的好多了,这个只是一笔带过吧,知道有这个命令就行,自己实践实践再说,大体和 psswd 有些参数的用法差不 多; id 工具: 查询用户所对应的UID 和GID 及GID所对应的用户组; id 工具是用来查询用户信息,比如用户所归属的用户组,UID 和 GID 等;id 用法极为简单;我们举个例子说明一下; 语法格式: id [参数] [用户名] 至于有哪些参数,自己查一下 id --help 或 man id ;如果 id 后面不接任何参数和任何用户,默认显示当前操作用户的用户名、 所归属的用户组、UID 和 GID 等; 实例一:不加任何参数和用户名; [beinan@localhost ~] passwd注:beinan来更改密码;Changingpasswordforuserbeinan.Changingpasswordforbeinan(current)UNIXpassword:注:输入beinan的当前密码;passwd:Authenticationtokenmanipulationerror注:失败,不能更改密码;再来一例:注意:当我们清除一个用户的密码时,登录时就无需密码;这一点要加以注意;chage修改用户密码有效期限的命令;chage用语法格式:chage[−l][−m最小天数][−M最大天数][−W警告][−I失效日][−E过期日][−d最后日]用户前面已经说的好多了,这个只是一笔带过吧,知道有这个命令就行,自己实践实践再说,大体和psswd有些参数的用法差不多;id工具:查询用户所对应的UID和GID及GID所对应的用户组;id工具是用来查询用户信息,比如用户所归属的用户组,UID和GID等;id用法极为简单;我们举个例子说明一下;语法格式:id[参数][用户名]至于有哪些参数,自己查一下id−−help或manid;如果id后面不接任何参数和任何用户,默认显示当前操作用户的用户名、所归属的