Linux常见操作
本文将详细介绍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[0-1] 打印机(25针) /dev/1p[0-2] 打印机(USB) /dev/usb/1p[0-15] 鼠标 /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 666 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 0
【其他重启命令】
reboot init 6
【运行级别】
系统运行级别包括以下7个
0 关机 1 单用户,安全模式 2 不完全多用户,不含nfs服务 3 完全多用户 4 未分配 5 图形界面 6 重启
cat /etc/inittab #修改系统默认运行级别 id:3: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 755 hello.sh ./hello.sh
2、或者,可以通过bash调用执行脚本
bash hello.sh
VIM
VIM是linux系统中的编辑器,类似于windows系统中的记事本
【操作模式】
vim编辑器有三种模式:
1、命令模式(等待用户输入命令)
2、输入模式(等待用户向文本中输入内容)
3、底行模式(可以输入一些指令)
vim abc.sh 打开或创建并打开abc.sh文件
i
进入vim之后,vim进入命令模式,这时敲击i键,可以把命令模式切换到输入模式,这时就可以输入内容了
ESC
在输入完成之后 ,敲击ESC键,可以把输入模式切换到底行模式,输入:wq即可保存退出
【命令格式】
vim + abc.sh 打开文件后将光标定位到文件的最后一行
vim +3 abc.sh 打开文件后将光标定位到文件的第三行
vim +/123 abc.sh 打开文件后将光标定位到123第一次出现的那行,进入文件后,可以按n键使光标在多个123中切换
【常用指令】
1、底行模式
:w 保存 :q 退出 :! 强制执行 :ls 列出当前编辑器中打开的所有文件 :n 切换到下一个文件 :N 切换到上一个文件 :15 光标快速定位到15行 /xxx 从光标位置开始向后搜索第一次出现xxx的行 ?xxx 从光标位置开始向前搜索第一次出现xxx的行
2、命令模式
h 光标左移 j 光标下移 k 光标上移 l 光标右移 Ctrl+f 向下翻页(front) Ctrl+b 向上翻页(back) ctrl+d 向下翻半页(down) Ctrl+u 向上翻半页(up) dd 删除光标所在行 o 在光标所在行的下方插入一行并切换到输入模式 yy 复制光标所在的行 p 在光标所在行的下方粘贴 P 在光标所在行的上方粘贴
输入输出
【输出重定向】
【输入重定向】
wc [选项] [文件名] 选项: -c 统计字节数 -w 统计单词数 -l 统计行数
命令<文件把文件作为命令的输入
命令<<标识符把标识符之间的内容作为命令的输入
进程管理
Linux 系统上有一个命令ps用来报告系统当前的进程状态
$ ps aux
上面指令可以查看系统当前所有进程
$ kill 1234
上面指令可以强制关闭进程号为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 : 123 :abc,def,xyz 组名称:组密码占位符:组编号:组中用户名列表
当用户组名称与用户名相同时,可以省略用户名列表的信息
组编号0为root,1-499为系统保留组编号,一般用于安装在系统中的软件或服务;用户手动创建的用户组从500开始
【gshadow】
/etc/gshadow 存储当前系统中用户组的密码信息
Group: * : : abc,def,xyz 组名称:组密码:组管理者:组中用户名列表
该文件中的内容与group里面的内容一一对应
【passwd】
/etc/passwd 存储当前系统中所有用户的信息
user: x : 123 : 456 : 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:8081
然后使用kill -9命令来结束进程
kill -9 18446