前面的话
本文将详细介绍Linux常见操作
基本概念
Linux严格区分大小写,所有内容以文件形式保存,包括硬件
Linux没有扩展名的概念,不靠扩展名来区分文件类型。但有一些约定俗成的扩展名
压缩包: .gz .bz2 .tar.bz2 .tgz
二进制软件包:.rpm
网页文件: .html .php
脚本文件: .sh
配置文件: .conf
[注意]windows下的程序不能直接在linux中安装和运行
Linux字符界面的优势如下:
1、占用的系统资源更少
2、减少了出错、被攻击的可能性
【分区类型】
主分区:最多只能有4个
扩展分区:最多只能有1个,主分区加扩展分区最多有4个,不能写入数据,只能包含逻辑分区
【硬件设置文件名】
硬件 设置文件名
IDE硬盘 /dev/hd[a-d]
SCSI/SATA/USB硬盘 /dev/sd[a-p]
光驱 /dev/cdrom 或/dev/hdc
软盘 /dev/fd[-]
打印机(25针) /dev/1p[-]
打印机(USB) /dev/usb/1p[-]
鼠标 /dev/mouse
【挂载】
必须分区
/ (根分区)
swap分区 (交换分区,内存2倍,不超过2GB) 推荐分区
/boot (启动分区,200MB)
显示
【起始标识】
[root@bogon ~]#
root表示当前登录用户为管理员
bogon表示主机名
~表示当前所在目录
#是管理员的提示符
$是普通用户的提示符
【命令格式】
当有多个选项时,可以写在一起
选项包括简化选项与完整选择如-a 等于 --all
命令 [选项] [参数]
[注意]个别命令使用不遵循此格式
文件
【文件类型】
Linux包括以下7种文件类型,以文件位第一位来表示文件类型
- 文件
d 目录
l 软链接文件
除了上面这3种,还有块设备文件、字符设备文件、套接字文件和管道文件。这4种文件都是linux系统中的特殊文件
【文件身份】
文件位共有10位组成,除了第1位表示文件类型外,后9位每3位为一组,表示文件的所有者、所属组和其他人
【文件权限】
r读
w写
x执行
下面这个例子中,表示这是一个文件,所有者有读写权限,而所属组和其他人只有读权限
一般地,用户在自己主目录下拥有写权限,主目录之外只有读权限。如果一定在要不具有写权限的目录下操作文件,如新建文件。则可以使用sudo命令,变身管理员,然后输入管理员的密码来执行这个操作
sudo touch aaa
【文件信息】
上面的例子中,两个root之后,分别代码文件大小、文件最后一次修改时间及文件名称
[注意]linux中文件名以.开头的文件是隐藏文件
【修改文件权限】
比如,将a.txt文件的权限变更为读写权限
chmod a.txt
实际中使用 chmod 命令最多的一种情形可能是给自己写的脚本加一个执行权限
chmod +x a.sh
【常用一级目录作用】
/ 根目录
/bin 存放系统命令
/sbin 存放只有管理员才能执行的系统命令
/usr 系统资源保存目录,包含了一般不需要修改的应用程序,命令程序文件、程序库、手册和其它文档
/usr/bin 存放系统命令
/usr/sbin 存放只有管理员才能执行的系统命令
/boot 存放内核以及启动所需的文件等
/dev 存放设备文件
/etc 存放系统的配置文件
/lib 存放函数库
/home 用户文件的主目录,用户数据存放在此目录中
/root 管理员的主目录
/mnt 空目录,存放临时的映射文件系统,常把软驱和光驱挂装在这里的floppy和cdrom子目录下
/media 空目录,存放临时的映射文件系统,老式linux无该目录
/misc 空目录,存放临时的映射文件系统,老式linux无该目录
/proc 不能直接操作,存放存储进程和系统信息
/sys 不能直接操作,存放存储进程和系统信息
/tmp 存放临时文件的目录
/var 包含系统产生的经常变化的文件
关机
关机
【shutdown】
shutdown [选项] 时间
选项:
-c: 取消前一个关机命令
-h: 关机
-r: 重启
shutdown -h now 立刻关机
【其他关机命令】
halt
poweroff
init
【其他重启命令】
reboot
init
【运行级别】
系统运行级别包括以下7个
关机
单用户,安全模式
不完全多用户,不含nfs服务
完全多用户
未分配
图形界面
重启
cat /etc/inittab
#修改系统默认运行级别
id::initdefault: runlevel
#查询系统运行级别
登录
【查看登录用户信息】
【退出登录】
logout
【who】
【查询当前登录和过去登录的用户信息】
【查看所有用户的最后一次登录时间】
shell
shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序
shell还是一个功能非常强大的编程语言,易编写,易调试,灵活性较强。shell是解释执行的脚本语言,在shell中可以直接调用linux系统命令
【语法类型】
Bourne Shell: 主文件名为 sh
语法类型:sh、ksh、Bash、psh、zsh
C Shell : 主要在BSD版的Unix系统中使用
语法类型: csh、 tcsh
【查看当前系统的SHELL类型】
【编辑脚本】
vi hellp.sh
【退出脚本】
在vim中编辑好之后,按esc键,回到一般模式,再输入“:wq”,回车执行
【脚本执行】
1、赋予执行权限,直接运行
chmod hello.sh
./hello.sh
2、或者,可以通过bash调用执行脚本
bash hello.sh
输入输出
【输出重定向】
【输入重定向】
wc [选项] [文件名]
选项:
-c 统计字节数
-w 统计单词数
-l 统计行数
命令<文件把文件作为命令的输入
命令<<标识符把标识符之间的内容作为命令的输入
进程管理
Linux 系统上有一个命令ps用来报告系统当前的进程状态
$ ps aux
上面指令可以查看系统当前所有进程
$ kill
上面指令可以强制关闭进程号为1234的进程
$ bg
上面指令让程序变成后台执行
$ fg
上面指令让程序回到前台
磁盘管理
【df】查看磁盘分区使用状况
-I 仅显示本地磁盘(默认)
-a 显示所有文件系统的磁盘使用情况
-h 以1024进制计算最合适的单位显示磁盘容量
-H 以1000进制计算最合适的单位显示磁盘容量(新购买的U盘实际容量小于标识容量,是因为工业生产使用1000进制,而不是1024进制)
-T 显示磁盘分区类型
-t 显示指定类型文件系统的磁盘分区
-x 不显示指定类型文件系统的磁盘分区
【du】统计磁盘上的文件大小
-b 以Byte为单位统计文件
-k 以KB为单位统计文件
-m 以MB为单位统计文件
-h 按照1024进制以最适合的单位统计文件
-H 按照1000进制以最适合的单位统计文件
-s 指定统计目标
【MBR分区】
fdisk -l 查看当前磁盘分区
fdisk /dev/sdb 进入分区模式
通过下面的命令为磁盘分得一个3GB的主分区
分配结束后,输入p命令来查看分区信息
最后输入w来保存并结束当前分区结果
【GPT分区】
MBR分区的限制在于主分区不超过4个,单个分区容量最大为2TB。而GPT分区最多支持128个分区,单个分区容量最大为18EB
1EB = 1024PB
1PB = 1024TB
1TB = 1024GB
GPT分区中,不适合安装X86架构的系统,即32位操作系统
fdisk命令只适合于MBR分区,而parted命令同时适合于MBR分区和GPT分区
[注意]下面分区从1M开始是为了保持4K对齐
【分区格式化】
先使用ll /dev/sdb*来查看sdb的分区情况
使用mkfs命令来进行分区格式化
[注意]扩展分区不能进行分区格式化
mkfs .ext4 /dev/sdb1
【挂载】
格式化后的分区必须进行挂载操作,才能使用。一般地,挂载在mnt目录下
下面代码中,将sdb1挂载到mnt目录下的sdb1目录中
mkdir -p /mnt/sdb1
mount /dev/sdb1 /mnt/sdb1
通过mount命令挂载的分区不具有永久性,关机后失效。更好的方式是需要编辑etc目录下的fstab文件
vim + /etc/fstab
这样一来,即使系统重启,也会进行自动挂载
【swap交换分区】
在linux中添加swap交换分区的步骤如下
1、先建立一个linux普通分区 (用MBR建立)输入fdisk /dev/sdb
2、修改分区类型的16进制:输入t,再输入该硬盘的分区号如6,再输入16进制的编码L。修改编码83,改为82(swap类型)输入w保存退出
3、格式交换分区 mkswap /dev/sdb6
4、启动分区 swapon /dev/sdb6
5、关闭分区 swapoff /dev/sdb6
用户管理
linux允许多个用户在同一个时间登录同一个操作系统
【group】
/etc/group 存储当前系统中所有的用户组信息
Group: x : :abc,def,xyz
组名称:组密码占位符:组编号:组中用户名列表
当用户组名称与用户名相同时,可以省略用户名列表的信息
组编号0为root,1-499为系统保留组编号,一般用于安装在系统中的软件或服务;用户手动创建的用户组从500开始
【gshadow】
/etc/gshadow 存储当前系统中用户组的密码信息
Group: * : : abc,def,xyz
组名称:组密码:组管理者:组中用户名列表
该文件中的内容与group里面的内容一一对应
【passwd】
/etc/passwd 存储当前系统中所有用户的信息
user: x : : : xxxxxxx :/home/user:/bin/bash
用户名:密码占位符:用户编号:用户组编号:用户注释信息:用户主目录:shell类型
/etc/shadow存储当前系统中所有用户的密码信息
user :vf;/Zu8sdf...:::::
用户名: 密码 :::::
由于系统运行过程中,group和passwd这两个文件经常需要被读取,而密码又属于敏感数据,于是单独设置了gshadow和shadow来保存密码
【基本命令】
groupadd 用户组名 #创建用户组
groupmod -n 新组名 原组名 #修改用户组名
groupmod -g 组编号 组名称 #修改组编号
groupadd -g 组编号 组名称 #创建用户组并指定组编号
groupdel 组名称 #删除用户组 useradd -g 用户组 用户 #向指定用户组中添加用户
useradd -d 文件夹 用户 #创建用户并指定用户的个人文件夹
usermod -c 备注信息 用户 #给用户添加备注信息
usermod -l 新用户 原用户 #修改用户名
usermod -g 目标用户组名 用户 #切换用户组
userdel 用户名 #删除用户
userdel -r 用户名 #删除用户及对应的个人文件夹
touch /etc/nologin #禁止除root外的用户登录服务器
passwd abc #给用户adc设置密码
[注意]在centos系统下,使用useradd会默认在home目录下,新增一个与用户名同名的目录。如果是ubuntu系统,默认不创建目录,如果需要则添加-m参数
【进阶命令】
passwd -l 用户名 #锁定用户 禁用
passwd -u 用户名 #解锁用户
passwd -d 用户名 #清除用户密码,可以无密码登录
用户可以同时属于多个组,一个是主要组,其他的为附属组
gpasswd -a 用户名 附属组,附属组,..... #添加附属组
用户创建的文件默认为主要组;需要以附属组创建文件的,需将身份切换到附属组
newgrp 附属组名称 #切换附属组
[注意]需要用户登录后,自己执行,切换,组密码是在组切换时用的,如果有,会要求输入组密码
gpasswd -d 用户名 附属组 #删除附属组
useradd -g group1 -G group2,group3,.... #创建用户同时指定主要组和附属组
gpasswd 用户组 #设定组密码
[注意]输入后回车,会有提示让输入密码
su username #切换当前用户身份,su后不加参数切换到root
sudo su #切换到root用户
whoami #显示当前登录用户名
id 用户名 #显示制定用户信息,包括用户编号,用户名,主要组编号及名称,附属组列表
groups 用户名 #显示用户所在的所有组
chfn 用户名 #设置用户资料
finger 用户名 #显示用户详细资料
端口设置
查看某个端口被占用情况
lsof -i:
然后使用kill -9命令来结束进程
kill -