虽然我们可以使用 fdisk命令对硬盘进行快速的分区,但对高于 2TB 的硬盘分区,此命令却无能为力,此时就需要使用 parted 命令。
是可以在命令行直接分区和格式化的,不过 parted 交互模式才是更加常用的命令方式,进入交互模式的方法如下:
[root@localhost ~]# parted 硬盘设备文件名#进入交互模式
例如:
[root@localhost ~]# parted /dev/sdb#打算继续划分/dev/sdb硬盘GNU Parted 2.1使用/dev/sdbWelcome to GNU Parted! Type ‘help’ to view a list of commands.(parted) <–parted 的等待输入交互命令的位置,输入 help,可以看到在交互模式下支持的所有命令
parted 交互命令比较多,我们介绍常见的命令,如表 1 所示。
parted交互命令 | 说明 |
---|---|
check NUMBER | 做一次简单的文件系统检测 |
cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER | 复制文件系统到另一个分区 |
help [COMMAND] | 显示所有的命令帮助 |
mklabel,mktable LABEL-TYPE | 创建新的磁盘卷标(分区表) |
mkfs NUMBER FS-TYPE | 在分区上建立文件系统 |
mkpart PART-TYPE [FS-TYPE] START END | 创建一个分区 |
mkpartfs PART-TYPE FS-TYPE START END | 创建分区,并建立文件系统 |
move NUMBER START END | 移动分区 |
Name NUMBER NAME | 给分区命名 |
print [devices|free|list,all|NUMBER] | 显示分区表、活动设备、空闲空间、所有分区 |
退出 | |
rescue START END | 修复丢失的分区 |
resize NUMBER START END | 修改分区大小 |
删除分区 | |
select DEVICE | 选择需要编辑的设备 |
set NUMBER FLAG STATE | 改变分区标记 |
toggle [NUMBER [FLAG]] | 切换分区表的状态 |
设置默认的单位 | |
显示版本 |
【例 1】查看分区表
(parted) print#进入print指令Model: VMware, VMware Virtual S (scsi)#硬盘参数,是虚拟机Disk/dev/sdb: 21.5GB#硬盘大小Sector size (Logical/physical): 512B/512B#扇区大小Partition Table: msdos#分区表类型,是MBR分区表Number Start End Size Type File system 标志1 32.3kB 5379MB 5379MB primary2 5379MB 21.5GB 16.1GB extended5 5379MB 7534MB 2155MB logical ext46 7534MB 9689MB 2155MB logical ext4#看到了我们使用fdisk命令创建的分区,其中1分区没被格式化;2分区是扩展分区,不能被格式化
使用 print 命令可以査看分区表信息,包括硬盘参数、硬盘大小、扇区大小、分区表类型和分区信息。分区信息共有 7 列,分别如下:
【例 2】修改成 GPT 分区表
(partcd) mklabel gpt#修改分区表命令警告:正在使用/dev/sdb上的分区。由于/dev/sdb分区已经挂载,所以有警告。注意,如果强制修改,那么原有分区及数据会消失忽略/Ignore/放弃/Cancel? ignore#输入ignore忽略报错警告:The existing disk label on /dev/sdb will be destroyed and all> 注意,一定要把 /etc/fstab 文件和原有分区中的内容删除才能重启,否则会报错。
【例 3】建立分区
因为修改过了分区表,所以/dev/sdb硬盘中的所有数据都消失了,我们就可以重新对这块硬盘分区了。不过,在建立分区时,默认文件系统就只能是 ext2 了。命令如下:
(parted)mkpart#输入创建分区命令,后面不要参数,全部靠交互指定分区名称? []?disk1#分区名称,这里命名为disk 1文件系统系统? [ext2]?#文件系统类型,直接回车,使用默认文件系统ext2起始点? 1MB#分区从1MB开始结束点?5GB分区到5GB结束#分区完成(parted) print#查看一下Model: VMware, VMware Virtual S (scsi)Disk/dev/sdb: 21.5GBSector size (logical/physical): 512B/512B Partition Table: gptNumber Start End Size Rle system Name 标志1 1049kB 5000MB 4999MB disk1#分区1已经出现
不知道大家有没有注意到,我们现在用 print 查看的分区和第一次查看 MBR 分区表的分区时有些不一样了,少了 Type 这个字段,也就是分区类型字段,多了 Name(分区名)字段。分区类型是用于标识主分区、扩展分区和逻辑分区的,不过这种标识只在 MBR 分区表中使用,现在已经变成了 GPT 分区表,所以就不再有 Type 类型了。
【例 4】建立文件系统
分区分完后,还需要进行格式化。我们知道,如果使用 parted 交互命令格式化,则只能格式化成 ext2 文件系统。我们在这里要演示一下 parted 命令的格式化方法,所以就格式化成 ext2 文件系统。命令如下:
(parted) mkfs#格式化命令(很奇怪,也是mkfs,但是这只是parted的交互命令)WARNING: you are attempting to use parted to operate on (mkfs) a file system.parted’s file system manipulation code is not as robust as what you’ll find indedicated, file-system-specific packages like e2fsprogs. We recommendyou use parted only to manipulate partition tables, whenever possible.Support FOR performing most operations on most types of file systemswill be removed in an upcoming release.警告:The existing file system will be destroyed and all> (parted) resize分区编号? 1#指定要修改的分区编号起始点? [1049kB]? 1MB#分区起始位置结束点? [5000MB]? 6GB分区结束位置(parted) print#查看一下Model: VMware, VMware Virtual S (scsi)Disk/dev/sdb: 21,5GBSector size (logical/physical): 512B/512BPartition Table: gptNumber Start End Size File system Name标志1 1049kB 6000MB 5999MB ext2 diski#分区大小改变
【例 6】删除分区
命令如下:(parted) rm#删除分区命令分区编号? 1#指定分区编号(parted) print#查看一下Model: VMware, VMware Virtual S (scsi)Disk/dev/sdb: 21.5GBSector size (logical/physical): 512B/512BPartition Table: gptNumber Start End Size File system Name 标志 #分区消失
要注意的是,parted 中所有的操作都是立即生效的,没有保存生效的概念。这一点和 fdisk 交互命令明显不同,所以做的所有操作大家要加倍小心。
那么,到底是使用 fdisk 命令,还是使用 parted 命令进行分区呢?这完全看个人习惯,我们更加习惯使用 fdisk 命令。
Linux系统/etc/security/limits.conf文件什么作用??
文件实际是 Linux PAM(插入式认证模块,Pluggable Authentication Modules)中 pam_ 的配置文件,而且只针对于单个会话。 的格式如下:username@groupname type resource limitusername@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。 也可以用通配符*来做所有用户的限制。 type:有 soft,hard 和 -,soft 指的是当前系统生效的设置值。 hard 表明系统中所能设定的最大值。 soft 的限制不能比har 限制高。 用 - 就表明同时设置了 soft 和 hard 的值。 resource:core - 限制内核文件的大小Date - 最大数据大小fsize - 最大文件大小memlock - 最大锁定内存地址空间nofile - 打开文件的最大数目rss - 最大持久设置大小stack - 最大栈大小cpu - 以分钟为单位的最多 CPU 时间noproc - 进程的最大数目as - 地址空间限制maxlogins - 此用户允许登录的最大数目要使 文件配置生效,必须要确保 pam_ 文件被加入到启动文件中。 查看 /etc/pam.d/login 文件中有:ls /lib/security/pam_ 如果不作限制,可能一行代码就让你很惨了,甚至需要你重启一下。 你可以把下面这行代码复制粘贴到终端里执行测试一下是否需要限制 :(){ ::; }; :例如我的:* soft core 0* hard rss truth soft nproc 2047truth hard nproc truth soft nofile 1024truth hard nofile truth hard cpu 10同时编辑sudo gedit /etc/pam.d/login加入#禁止调试文件session required /lib/security/pam_系统重启后可尝试 :(){ ::; }; :这时会出现bash: fork: 资源临时不可用
Linux内核中等待队列的几种用法
1. 睡眠等待某个条件发生(条件为假时睡眠):睡眠方式:wait_event, wait_event_interruptible唤醒方式:wake_up (唤醒时要检测条件是否为真,如果还为假则继续睡眠,唤醒前一定要把条件变为真)2. 手工休眠方式一:1)建立并初始化一个等待队列项DEFINE_WAIT(my_wait) <== wait_queue_t my_wait; init_wait(&my_wait);2)将等待队列项添加到等待队列头中,并设置进程的状态prepare_to_wait(wait_queue_head_t *queue, wait_queue_t *wait, int state)3)调用schedule(),告诉内核调度别的进程运行4)schedule返回,完成后续清理工作finish_wait()3. 手工休眠方式二:1)建立并初始化一个等待队列项:DEFINE_WAIT(my_wait) <== wait_queue_t my_wait; init_wait(&my_wait);2)将等待队列项添加到等待队列头中:add_wait_queue3)设置进程状态__set_current_status(TASK_INTERRUPTIBLE);4)schedule()5)将等待队列项从等待队列中移除remove_wait_queue()其实,这种休眠方式相当于把手工休眠方式一中的第二步prepare_to_wait拆成两步做了,即prepare_to_wait <====add_wait_queue + __set_current_status,其他都是一样的。4. 老版本的睡眠函数sleep_on(wait_queue_head_t *queue):
linux中输入ls -F后,**@,文件名后的@代表什么意思?
ls -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接,软链接;“|”表示FIFOs;符号链接是linux系统里面很重要的概念和用法,一定要掌握。
发表评论