Linux 基础知识

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 基础知识相关的知识,希望对你有一定的参考价值。

GPT是什么?

GUID磁盘分区表(GUID Partition Table,缩写:GPT)其含义为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准。它是可扩展固件接口(EFI)标准(被Intel用于替代个人计算机的Bios)的一部分,被用于替代BIOS系统中的一64bits来存储逻辑块地址和大小信息的主开机纪录(MBR)分区表

 
 
GPT有哪些功能?

  • 在MBR硬盘中,分区信息直接存储于主引导记录(MBR)中(主引导记录中还存储着系统的引导程序)。但在GPT硬盘中,分区表的位置信息储存在GPT头中。但出于兼容性考虑,硬盘的第一个扇区仍然用作MBR,之后才是GPT头。
  • 跟现代的MBR一样,GPT也使用逻辑区块位址(LBA)取代了早期的CHS寻址方式。传统MBR信息存储于LBA 0,GPT头存储于LBA 1,接下来才是分区表本身。64位Windows操作系统使用16,384字节(或32扇区)作为GPT分区表,接下来的LBA 34是硬盘上第一个分区的开始。
  • 苹果公司曾经警告说:“不要假定所有设备的块大小都是512字节。”一些现代的存储设备如固态硬盘可能使用1024字节的块,一些磁光盘(MO)可能使用2048字节的扇区(但是磁光盘通常是不进行分区的)。一些硬盘生产商在计划生产4096字节一个扇区的硬盘,但截至2010年初,这种新硬盘使用固件对操作系统伪装成512字节一个扇区。
  • 使用英特尔架构的苹果机也使用GPT。
  • 为了减少分区表损坏的风险,GPT在硬盘最后保存了一份分区表的副本

 
 
Parted用法个常用选项:

用法:parted [选项]… [设备 [ 命令 [参数]… ]… ]

将带有参数的命令用于设备。如果没有出现命令,则以交互模式运行。

帮助选项:

-h,--help 显示此帮助信息

-l , --list 列出所有设备的分区信息

-I , --interactive 在必要是,提示用户

-s, --script 从不提示用户

-v , --version 显示版本

创建一个10G分区,并格式为ext4文件系统

  • 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA,默认挂载属性包含acl;
  • 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳
  • 可开机自动挂载

创建分区

fdisk  /dev/sdc
Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-41943039, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +10G
Partition 1 of type Linux and of size 10 GiB is set

Command (m for help): w
The partition table has been altered!

重读磁盘分区表

kpartx -af /dev/sdc

显示分区

fdisk -l /dev/sdc  

Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xb5878e08

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    20973567    10485760   83  Linux

创建文件系统

方法一

mke2fs -t ext4 -b 2048 -L MYDATA -m 2 /dev/sdb1

方法二

mkfs.ext4 -b 2048 -L MYDATA -m 2 /dev/sdb1

创建挂载目录

mkdir -pv /data/mydaa

配置自动挂载

vim /etc/fstab
/dev/sdb1   /data/mydata  ext4   defaults,noexec,noatime  0 0

 
 

创建一个大小为1G的swap分区,并启用。

创建分区

fdisk  /dev/sdc   
Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2): 
First sector (20973568-41943039, default 20973568): 
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-41943039, default 41943039): +1G
Partition 2 of type Linux and of size 1 GiB is set

Command (m for help): t
Partition number (1,2, default 2): 
Hex code (type L to list all codes): 82
Changed type of partition ‘Linux‘ to ‘Linux swap / Solaris‘

Command (m for help): p

Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xb5878e08

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    20973567    10485760   83  Linux
/dev/sdc2        20973568    23070719     1048576   82  Linux swap / Solaris

Command (m for help): w
The partition table has been altered!

重读磁盘分区表

kpartx -af /dev/sdc

创建交换分区

mkswap /dev/sdb2

创建自动挂载

vim /etc/fstab
/dev/sdb2    swap    swap    defaults        0 0

显示交换分区

swapon --show

方法二

dd if=/dev/zero of=/swapfile bs=1G count=1
chmod 600 /swapfile
mkswap /swapfile
vim /etc/fstab
/swapfile         swap       swap    defaults      0 0

 
 

编写脚本计算/etc/passwd文件中的第10个用户和第20个用户的id号之和

#!/bin/bash
#
id1=$(head -10 /etc/passwd | tail -1 | awk -F : ‘{print $3}‘)
id2=$(head -20 /etc/passwd | tail -1 | awk -F : ‘{print $3}‘)
echo sum=$[$id1+$id2]

 
 

当前主机名称保存至hostName变量中;主机名如果为空,或者为localhost.localdomain,则将其设置为www.magedu.com

hostName=$(hostname)
[ -z "$hostName" -o "$hostName" == "localhost.localdomain" -o "$hostName" == "localhost" ] && hostname www.magedu.com     

 
 

编写脚本,通过命令行参数给定一个用户名,判断其ID号是偶数还是奇数

#!/bin/bash
#
if  [ $[ $(id -u $1)%2 ] -eq 0 ]
then
echo $1 ID is  Even numbers
else
echo $1 ID is  Odd numbers
fi

方法二

#!/bin/bash
#
[ $[ $(id -u $1)%2 ] -eq 0 ] && echo $1 ID is  Even numbers || echo $1 ID is  Odd numbers

以上是关于Linux 基础知识的主要内容,如果未能解决你的问题,请参考以下文章

[linux][c/c++]代码片段01

20155307刘浩《网络对抗》逆向及Bof基础

[linux][c/c++]代码片段02

20155311高梓云《网络对抗》逆向及Bof基础

20145301赵嘉鑫《网络对抗》逆向及Bof基础

android小知识点代码片段