Linux笔记
修改运行级别
临时切换运行级别:用init命令,例如进入级别3
[root@localhost ~]# init 3
永久切换,需要修改配置文件vi /etc/inittab 重启虚拟机后生效。
虚拟机导入
导入vmdk文件,只需要新建虚拟机,创建虚拟机硬盘的时候,选择已有虚拟机硬盘。
这个时候选择到之前的虚拟机硬盘VMDK文件,即可。
常用快捷键:
Ctrl+C:终止当前进程
Ctrl+Z:暂停当前进程并放置后台
常用命令:
whatis 获取解释,后面紧接需要解释的命令符,如下图
help 获取帮助,提示如何使用命令。
man 命令符 解释命令的具体含义
目录结构之一些重要的目录
Home(家)目录:/root,/home/{UserName}
普通用户可执行文件:/bin,/usr/bin,/usr/local/bin
系统管理员可执行文件:/sbin,/usr/sbin,/usr/local/sbin
配置文件目录:/etc
临时文件目录:/tmp
内核和启动文件:/boot
服务器数据:/var , /srv
系统信息:/proc,/sys
共享库:/lib,/usr/lib,/usr/local/lib
其它挂载点:/media,/mnt
注意:文件或目录名:<=255个字符、区分大小写、不能使用“/”
开关机
shutdown –h now 立马关机
shutdown –h 20:25系统会在今天20:25关机
shutdown –h +10十分钟后关机
shutdown –r now 系统立马重启
shutdown –r +10系统十分钟后重启
reboot 就是重启
halt 关闭系统,等同于shutdown –h now 和 poweroff
clear 清除屏幕
快捷键ctrl+L 清除屏幕
Linux运行级别
0:关机
1:单用户
2:无网络的多用户
3:命令行模式
4:未用
5:GUI(图形桌面模式)
6:重启
init 运行级别 切换运行级别。 此方法仅是临时修改,重启后失效。永久修改方式:如下图所示:
在图形桌面按下ctrl+alt+F2,可以进入命令行界面,按ctrl+alt+F7可以再切换回到桌面。
startx 进入图形模式。可通过点击桌面右上角的root→quit→log out退回到命令模式
su targetUserName 切换用户substitute user(管理员切用户不需要密码,用户切管理员需要输入自己的密码)
查看运行级别
1、who –r 显示当前运行级别以及系统当前时间
[root@localhost ~]# who -r
run-level 5 2016-12-31 15:24
2、runlevel :显示前一个(无则显示”N”)、当前运行级别
[root@localhost ~]# runlevel
N 5
网络配置
显示网络配置信息
ifconfig
绑定静态IP
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=“eth0”
BOOTPROTO=“static”
IPV6INIT=“yes”
NM_CONTROLLED=“yes”
ONBOOT=“yes”
IPADDR=192.168.157.130
NETMASK=255.255.255.0
GATEWAY=192.168.157.2
DNS1=192.168.157.2
TYPE=“Ethernet”
UUID=“9275843d-39ad-4b2f-8eb4-032f9565b3ab”
HWADDR=00:0C:29:59:28:96
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=“System eth0”
LAST_CONNECT=1536167030
配置详解:
DEVICE=“eth0”
网卡名称
NM_CONTROLLED=“yes”
network mamager的参数 ,是否可以由NNetwork Manager托管
HWADDR=
MAC地址
TYPE=Ethernet
类型
PREFIX=24
子网掩码24位
DEFROUTE=yes
就是default route,是否把这个eth设置为默认路由
ONBOOT=yes
设置为yes,开机自动启用网络连接
IPADDR=
IP地址
BOOTPROTO=none
设置为none禁止DHCP,设置为static启用静态IP地址,设置为dhcp开启DHCP服务
NETMASK=255.255.255.0
子网掩码
DNS1=8.8.8.8
第一个dns服务器
BROADCAST
广播
UUID
唯一标识
TYPE=Ethernet
网络类型为:Ethernet
BRIDGE=
设置桥接网卡
GATEWAY=
设置网关
DNS2=8.8.4.4 #
第二个dns服务器
IPV6INIT=no
禁止IPV6
USERCTL=no
是否允许非root用户控制该设备,设置为no,只能用root用户更改
NAME=“System eth1”
这个就是个网络连接的名字
MASTER=bond1
指定主的名称
SLAVE
指定了该接口是一个接合界面的组件。
NETWORK
网络地址
ARPCHECK=yes
检测
PEERDNS
是否允许DHCP获得的DNS覆盖本地的DNS
PEERROUTES
是否从DHCP服务器获取用于定义接口的默认网关的信息的路由表条目
IPV6INIT
是否启用IPv6的接口。
IPV4_FAILURE_FATAL=yes
如果ipv4配置失败禁用设备
IPV6_FAILURE_FATAL=yes
如果ipv6配置失败禁用设备
磁盘操作
df -h 显示磁盘的相关信息 df=disk free
df (1p) - report free disk space
df (1) - report file system disk space usage
df:列出文件系统整体磁盘使用情况
a:列出所有文件系统
k:以KBytes的容量显示文件系统
m:以MBytes的容量显示文件系统
h:GBytes,MBytes,KBytes等格式自行显示
-i:以inode数量显示
du:文件系统的磁盘使用量或是目录使用量
a :列出所有的文件与目录容量
h :以人们较易读的容量格式(G/M)显示
s :列出总量而已,而不列出每个各别的目录占用容量
k :以 KBytes 列出容量显示
m :以 MBytes 列出容量显示
fdisk -l 列出分区表状况
lsblk 查看块设备
parted -l 显示分区情况
命令提示符详解
[root@localhost ~]# #/root
[mengxb@localhost ~]$ #/home/mengxb
用户名@主机名 当前目录 #超级管理员权限 $普通权限
命令格式
命令 选项 参数 (三者之间要有空格,区分大小写)
command [-options] [args]
[args]:参数(多个参数之间用空格分隔)
文件管理
Linux文件简介
文件颜色的代表含义:
蓝色:目录
绿色:可执行文件
红色:压缩文件
蓝绿色:链接文件
白色:其他文件
黄色:设备文件,其中包括block,char,fifo.
根目录的简单介绍:
描述
/ 根目录
/bin 做为基础系统所需要的最基础的命令就是放在这里。比如 ls、cp、mkdir等命令;功能和/usr/bin类似,这个目录中的文件都是可执行的,普通用户都可以使用的命令。
/boot Linux的内核及引导系统程序所需要的文件,比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录;启动装载文件存放位置,如kernels,initrd,grub。一般是一个独立的分区。
/dev 一些必要的设备,声卡、磁盘等。还有如 /dev/null. /dev/console /dev/zero /dev/full 等。
/etc 系统的配置文件存放地. 一些服务器的配置文件也在这里;比如用户帐号及密码配置文件;
/etc/opt:/opt对应的配置文件
/etc/X11:Xwindows系统配置文件
/etc/xml:XML配置文件
……
/home 用户工作目录,和个人配置文件,如个人环境变量等,所有的账号分配一个工作目录。一般是一个独立的分区。
/lib 库文件存放地。bin和sbin需要的库文件。类似windows的DLL。
/media 可拆卸的媒介挂载点,如CD-ROMs、移动硬盘、U盘,系统默认会挂载到这里来。
/mnt 临时挂载文件系统。这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom 等目录。可以参看/etc/fstab的定义。
/opt 可选的应用程序包。
/proc 操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录伪装的文件系统proc的挂载目录,proc并不是真正的文件系统,它的定义可以参见 /etc/fstab 。
/root Root用户的工作目录
/sbin 和bin类似,是一些可执行文件,不过不是所有用户都需要的,一般是系统管理所需要使用得到的。
/tmp 系统的临时文件,一般系统重启不会被保存。
/usr 包含了系统用户工具和程序。
/usr/bin:非必须的普通用户可执行命令
/usr/include:标准头文件
/usr/lib:/usr/bin/ 和 /usr/sbin/的库文件
/usr/sbin:非必须的可执行文件
/usr/src:内核源码
/usr/X11R6:X Window System, Version 11, Release 6.
/srv 该目录存放一些服务启动之后需要提取的数据
查看文件
ls [options] [file_or_dirs] 列出目录的内容,包括文件和子目录的名称list directory contents(需先用cd命令进入对应目录)
ls的选项和参数:
-a或–all 下所有文件和目录(包括隐藏的)。
-l 使用详细格式列表(ls -l可以简写为ll)
-R或–recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-ld 显示指定的目录或文件的详细信息
ll 命令查看文件详细列表
touch filename 创建空文件/修改文件(或目录)的时间戳
[root@localhost home]# cd /home/demo/
[root@localhost demo]# ls
abc xyz
[root@localhost demo]# touch hello
[root@localhost demo]# ls
abc hello xyz
[root@localhost demo]# cd abc
[root@localhost abc]# ll install.log
-rw-r–r--. 1 root root 41364 Jan 1 23:45 install.log
[root@localhost abc]# date
Sun Jan 1 23:59:55 PST 2017
[root@localhost abc]# touch install.log
[root@localhost abc]# ll install.log
-rw-r–r--. 1 root root 41364 Jan 2 00:00 install.log
rm –rf fileName -r递归删除 -f强制删除(需先切换到文件所在目录下)
rmdir directoryName 只能删除空目录
mv fileName targetDirectory 移动文件
mv oldName newName 重命名文件
参 数:
-b或–backup 若需覆盖文件,则覆盖前先行备份。
-f或–force 若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录。
-i或–interactive 覆盖前先行询问用户。
-S<附加字尾>或
--suffix=<附加字尾> 与-b参数一并使用,可指定备份文件的所要附加的字尾。
-u或–update 在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不覆盖目标文件。
-v或–verbose 执行时显示详细的信息。
-V=<方法>或
--version-control=<方法> 与-b参数一并使用,可指定备份的方法。
--help 显示帮助。
--version 显示版本信息。
rename keyName replaceName fileType批量修改文件名
rename 支持通配符:
? 可替代单个字符
正则表达式:
字母替换:
renmae “s/AA/aa/” * 把所有文件名中的AA替换成aa
修改文件后缀
rename “s//.html/.java/” * 把所有.html的文件改为.java文件。
批量添加文件后缀
rename “s/$//.txt/” * 把所有的文件名都以.txt结尾
批量删除文件
rename “s//.txt//” * 把所有以.txt结尾的文件名D的txt都删掉。
复制文件
cp (选项)directoryName targetDirectory 复制指定文件到目标目录
cp选项:
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
例:在命令前添加反斜杠“\”,可以实现——复制当前文件下的8000文件夹下redis.conf到8002文件夹,不跳出询问窗口“cp: overwrite `8001/redis.conf’? y”,无须输入“y”。
[root@10-9-162-80 redis-3.2.11]# \cp 8000/redis.conf 8002/
在linux下拷贝的时候有时候会出现cp:omitting directory的错误 ,例如 cp:omitting directory “bbs” 说明bbs目录下面还有目录,不能直接拷贝
解决办法:递归拷贝 命令:cp -r bbs …/backup/bbs 解释:-r 这个options是递归的意思
目录操作
pwd 查看当前目录的绝对路径
mkdir directoryName 创建目录
mkdir参数:
-p创建新目录时,其父目录不存在时首先创建父目录
-m创建新目录的同时指定其权限
cd targetDirectory切换目录
用户管理
用户及UID
root用户:超级管理员,UID是0
系统用户:UID是1-499
自定义用户:UID从500开始
用户信息存储位置
账户信息存储于/etc/passwd
密码信息存储于/etc/shadow
创建用户的同时,默认还会为用户创建一个同名的组,组信息保存在/etc/group中
cat /etc/passwd查看所有的用户信息
cat /etc/passwd|grep 用户名 查看指定用户
cat /etc/group查看所有组信息
useradd [选项] userName 添加用户
参数说明[选项]:
-c comment 指定一段注释性描述
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号
id userName显示用户uid、gid、groups等信息
usermod [选项] userName 修改用户
passwd [选项] userName 新增/修改用户密码
可使用的选项:
• -l(lock) 锁定口令,即禁用账号。
• -u(unlock) 口令解锁。
• -d(HOME_DIR) 使账号无口令(删除密码)。(此命令仅管理员有效)
userdel userName 删除用户(但未删除home目录下对应名的文件夹)
userdel -r userName 删除用户及其所有文件夹
groupadd [选项] groupName 添加用户组
可以使用的选项有:
-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
添加用户组market,并指定标识号为8000
#groupadd –g 8000 market
将用户添加到附加组
#usermod –aG market tom (a:append G:附加组)
创建一个用户组与root用户组GID系统
groupdel groupName 删除用户组
如果删除的用户组,已经被用户追加为附件组,对应的所有用户的该附件组会被撤销掉。
如果被删除的用户组,已经被用户指定为主组,则该用户组无法被删除。(可以理解为像Windows中文件被占用时不能被删除。)
groupmod [选项] groupName 修改用户组
newgrp root 这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组
cat查看文件(不具备编辑功能,而vim可以编辑)
[root@localhost ~]# cat /etc/passwd
gm❌802:0::/home/z:/bin/bash
tom❌803:803::/home/tom:/bin/bash
/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
lsattr 列出文件的隐藏属性。其语法格式为:
lsattr [ -RVadv ] [ files… ]
选项:
-R 递归显示目录下所有子目录和文件的属性
-V 显示lsattr程序的版本信息
-a 显示所有文件的属性信息,包括以.开头的文件
-d 显示目录的属性,而不是目录下的文件的属性
-v 显示文件的档案号码
权限管理
chmod 修改权限
例:修改用户winyar,用户组girl对upload文件夹内所有的文件和文件夹及子文件夹属性为可写可读可执行
chown -R 所有者用户名.组名 文件夹名称
chmod -R winyar.girl /upload
1.命令格式:
chown [选项]… [所有者][:[组]] 文件…
2.命令功能:
通过chown改变文件的拥有者和群组。在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。
3.命令参数:
必要参数:
-c 显示更改的部分的信息
-f 忽略错误信息
-h 修复符号链接
-R 处理指定目录以及其子目录下的所有文件
-v 显示详细的处理信息
-deference 作用于符号链接的指向,而不是链接文件本身
权限对应的数字权限:
r = 4(读)
w = 2 (写)
x = 1 (执行)
如果你看到了一个文件的权限为:- rwx r-x r-- .txt
user group other
该文件的数字权限为:754,其含义为:用户拥有读、写、执行的权限,用户组拥有读、执行,其他人仅拥有读的权限。
-rw------- (600) 只有所有者才有读和写的权限
-rw-r–r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
-rwx------ (700) 只有所有者才有读,写,执行的权限
-rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
-rwx–x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
-rw-rw-rw- (666) 每个人都有读写的权限
-rwxrwxrwx (777) 每个人都有读写和执行的权限
修改文件可读写属性的方法
例如:把index.html 文件修改为可写可读可执行:
chmod 777 index.html
要修改目录下所有文件属性可写可读可执行:
chmod 777 .
把文件夹名称与后缀名用来代替就可以了。
比如:修改所有htm文件的属性:
chmod 777 .htm
修改文件夹属性的方法
把目录 /images/small 修改为可写可读可执行
chmod 777 /images/small
修改目录下所有的文件夹属性
chmod 777 *
把文件夹名称用来代替就可以了
要修改文件夹内所有的文件和文件夹及子文件夹属性为可写可读可执行
chmod -R 777 /upload
物理权限
chattr [ -RVf ] [ -v version ] [ mode ] files… 此命令可以用来锁定某个文件不能被修改。可以通过此命令来修改文件的物理属性从而提高系统的安全性。
注意:不能修改保护/ 、 /dev 、 /tmp 、 /var目录。
选项:
a:让文件或目录仅供附加用途;
b:不更新文件或目录的最后存取时间;
c:将文件或目录压缩后存放;
d:将文件或目录排除在倾倒操作之外;
i:不得任意更动文件或目录;
s:保密性删除文件或目录;
S:即时更新文件或目录;
u:预防意外删除。
-R:递归处理,将指令目录下的所有文件及子目录一并处理;
-v<版本编号>:设置文件或目录版本;
-V:显示指令执行过程;
+<属性>:开启文件或目录的该项属性;
-<属性>:关闭文件或目录的该项属性;
=<属性>:指定文件或目录的该项属性。
实例:
防止系统中的某个关键文件被修改
chattr +i /etc/fstab
将home目录下的文件和目录设置为不允许任何人修改
chattr -R +i /home
让某个文件只能追加内容,不能删除
chattr +a /root/install.log
mount 设备文件 挂载点 将设备挂载到某个目录
umount 设备文件或挂载点 取消挂载
免密操作
实现Xshell免密登录
1.生成密钥、公钥
2.发送公钥要本地127.0.0.1
[root@localhost ~]# ssh-keygen 生成公钥/私钥
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 按两次Enter
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
d8:e0:0d:9f:bf:49:e8:a4:71:26:17:e4:61:1b:b0:fd [email protected]
The key’s randomart image is:
±-[ RSA 2048]----+
| . |
| + |
| + * |
| . @ * |
| o S E |
| + |
| o * o |
| X . o |
| . . o |
±----------------+
[root@localhost ~]# ll /root/.ssh/
total 16
-rw-------. 1 root root 816 Sep 6 10:43 authorized_keys
-rw-------. 1 root root 1675 Sep 6 11:12 id_rsa
-rw-r–r--. 1 root root 408 Sep 6 11:12