Linux笔记(没有消息就是好消息)
常用指令
cd [dirName]
cd ~
cd ..
pwd
clear
man [命令或配置文件]
help 命令
ls -a
linux目录结构
-
/ 系统的根目录,Linux中的所有目录都存在这个目录下面 -
/bin [常用] (/usr/bin、/usr/local/bin) 是binary的缩写,存放着经常使用的命令 -
/sbin (/usr/sbin、/usr/local/sbin) 存放系统管理员使用的系统管理程序 -
/root [常用] 系统管理员的主目录 -
/home [常用] 存放普通用户的主目录,其中的目录一般是以每个用户的账号命名的 -
/lost+found [隐藏目录] 当系统非法关机后,这里才会存放一些文件 -
/lib 系统开机或者其中的应用程序需要用到的一些共享库 -
/etc [常用] 所有的系统管理所需要的配置文件和子目录 -
/usr [常用] 用户的很多应用程序和文件存放的位置,类似windows中的program files -
/boot [常用] 存放启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件 -
/proc (不要随意修改) 这个目录时一个虚拟的目录,他是系统内存的映射,访问这个目录来获取系统信息 -
/srv (不要随意修改) 是service的缩写,存放一些服务启动之后需要提取的数据 -
/sys (不要随意修改) 这是Linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs -
/tmp 存放一些临时文件 -
/dev 类似windos的设备管理器,把所有硬件用文件的形式存储 -
/media [常用] Linux会把识别的一些外部设备挂载到这个目录下,如U盘、光驱等等。 -
/mnt [常用] 供以临时挂载别的文件系统,可以将外部的存储挂载到此目录中,然后进入该目录就能查看到其中过的内容 -
/opt 存放主机额外安装软件所需要的软件包 -
/usr/local [常用] 这是另一个给主机额外安装软件所安装的目录,一般是通过编译源码方式安装的程序 -
/var [常用] 这个目录存放着不断扩充的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件。 -
/selinux [security-enhanced linux] SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置,未开启安全模式此目录就不存在
Vi和Vim的基本使用
vi和vim的三种模式
-
正常模式 以vim打开一个档案就直接进入一般模式了(默认),在该模式下,可以使用上下左右按键来移动光标,你可以使用删除字符和删除整行来处理文档内容,也可以使用复制粘贴来处理你的文件数据 -
编辑模式 按下i、o、a、r(大小写都可以)其中一个,就可以进入该模式 -
命令行模式 在编辑模式下按Esc,再输入一个 : ,就能够进入该模式。在该模式下,你可以使用一些相关指令,完成读取、保存、替换、离开vim、显示啊行号等操作
常用快捷键
:q
:q!
yy
3yy
p
dd
5dd
/查找内容
n
set nu
set nonu
G
gg
u
20 shift+g
关机重启
shutdown -h now
shutdown -h 1
shutdown
shutdown -r now
halt
reboot
sync
用户注销
su - 用户名
su
logout
用户管理
useradd 用户名
useradd -d 目录名 用户名
passwd 用户名
passwd
userdel 用户名
userdel -r 用户名
id 用户名
who am i
用户组(用于多用户权限管理)
groupadd 组名
groupdel 组名
useradd -g 用户组 用户名
usermod -g 用户组 用户名
用户和组的相关文件
-
/etc/password文件 用户的配置文件,记录用户的各种信息 每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell -
/etc/shadow文件 口令的配置文件 每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告是按:不活动时间:失效时间:标志 -
/etc/group文件 组的配置文件,记录Linux包含的组的信息 每行的含义:组名:口令:组标识号:组内用户列表
Linux运行级别
运行级别 | 描述 |
---|
0 | 关机 | 1 | 单用户[找回丢失密码] | 2 | 多用户状态没有网络服务 | 3 | 多用户状态有网络服务 | 4 | 系统未使用保留给用户 | 5 | 图形界面 | 6 | 系统重启 |
init [0123456]
systemctl get-default
systemctl set-default target
文件目录指令
cd 目录
cd ~
cd ..
mkdir 目录名
mkdir -p 目录名
rmdir 要删除的空目录
rm -rf 目录名
touch 文件名称
cp [选项] source dest
cp -r source dest
\cp -r source dest
rm [选项] 要删除的文件或目录
mv oldFileName newFileName
mv 目录名 另一个目录名
cat [选项] 要查看的文件
cat 要查看的文件 | more
选项 | 描述 |
---|
空格键 | 向下翻一页 | enter | 向下翻一行 | q | 立刻离开more | ctrl+f | 向下滚动一屏 | ctrl+b | 返回上一屏 | = | 输出当前行的行号 | :f | 输出文件名和当前行的行号 |
more 要查看的文件
选项 | 描述 |
---|
空格键 | 向下翻一页 | pagedown | 向下翻一页 | pageup | 向上翻一页 | /字串 | 向下搜寻字串的功能:n:向下查找;N:向上查找 | ?字串 | 向上搜寻字串的功能,同上/ | q | 退出less |
less 要查看的文件名
echo [选项] [输出内容]
- head指令:显示文件的开头部分内容,默认情况下head会显示文件的前10行内容
head 文件名
head -n 5 文件名
- tail指令:输出文件中尾部的内容,默认显示前10行内容
tail 文件
tail -n 5 文件
tail -f 文件
ls -l > 文件
cat 文件1 > 文件2
- ln指令:创建软链接,类似windows中的快捷方式
ln -s 原文件或目录 软链接名
rm 软链接名
history
history 10
!10
时间日期指令
date
date +%Y
date +%m
date +%d
date "%Y-%m-%d %H:%M:%S"
date -s 字符串时间
cal
cal 2021
查找指令
选项 | 描述 |
---|
-name<文件名> | 按照指定文件名查找文件 | -user<用户名> | 查找指定用户的的所有文件 | -size<文件大小> | 按照指定文件大小查找文件 |
find [搜索范围] [选项]
find / -size +200M
find / -size -200M
find / -size 200M
- locate指令:快速定位文件路径,通过查找事先建立的locate数据库实现快速定位
- updatedb更新当前的locate数据库
locate 搜索文件
which ls
grep [选项] 查找内容 源文件
压缩和解压
- gzip/gunzip指令:gzip用于压缩文件,gunzip用于解压缩文件
gzip 文件
gunzip 文件.gz
unzip常用选项
zip [选项] xxx.zip 将要压缩的内容
unzip [选项] xxx.zip
选项 | 描述 |
---|
-c | 产生.tar打包文件 | -v | 显示详细信息 | -f | 指定压缩后的文件名 | -z | 打包同时压缩 | -x | 解包.tar文件 | -C | 指定解压文件到那个目录 |
tar [选项] xxx.tar.gz 打包的内容
Linux组的概念
ls -ahl
chown 用户名 文件名
- 所在组:文件所在的组,当一个用户创建一个文件时,该文件所在的组默认就是该文件所有者所在的组
chgrp 新的组 文件
usermod -g 新组名 用户名
usermod -d 目录名 用户名
Linux中rwx权限
在使用ls -l命令时显示内容如下:
drwxr-xr-x. 2 root root 4096 8月 10 23:51 公共
0-9位说明:
-
第0位确定文件类型(d , - , l , c , b) -是普通文件,如hello.txt l是链接,相当于windows中的快捷方式 d是目录,相当于windows中的文件夹 c是字符设备文件,鼠标,键盘 b是块设备,比如硬盘 -
第1-3位确定所有者(该文件的所有者)拥有该文件的权限 -User -
第4-6位去顶所属组(同用户组的)拥有该文件的权限 -Group -
第7-9位去欸的那个其他用户拥有该文件的权限 -Other
rwx权限详解
-
rwx作用到文件
- r 代表可读(read):可以读取、查看
- w 代表可写(write):可以修改,但是不代表可以删除,删除一个文件的前提是对该文件所在的目录有写权限,才能删除该文件
- x 代表可执行(execute):可以被执行
-
rwx作用到目录
- r 代表可读(read):可以读取,ls查看目录内容
- w 代表可写(write):可以修改,对目录内创建+删除+重命名目录
- x 代表可执行(execute):可以进入该目录
-
查看文件或目录时每列信息代表的含义
rwx可以用数字标识:r=4,w=2,x=1 ,因此rwx=4+2+1=7
后面的每一列说明:
示例 | 描述 |
---|
1 | 文件:硬链接数量 目录:子目录数量 | root | 所有者(用户) | root | 所在组 | 0 | 文件大小(字节),如果是文件夹,显示4096字节 | 8月 18 20:09 | 最后修改时间 | cat.txt | 文件名或目录名 |
修改权限
使用chmod指令,可以修改文件/目录的权限
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
chmod u=rwx,g=rx,o=x 文件/目录名
chmod o+w 文件/目录名
chmod a-x 文件/目录名
-
第二种方式:通过数字变更权限 r=4,w=2,x=1 rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件目录名
chmod 751 文件目录名
修改所在组和所有者
chown指令
chown 新所有者 文件/目录
chown 新所有者:新所在组
chgrp指令
chgrp 新的所在组 文件/目录
Linux定时任务调度
选项 | 功能 |
---|
-e | 编辑crontab定时任务 | -l | 查询crontab任务 | -r | 删除当前用户所有的crontab任务 |
先执行crontab -e
然后输入 */1 * * * * ls -l /etc/ > /tmp/to.txt
之后就可以开启一个调度任务,该任务会每分钟执行一次
? ls -l /etc/ > /tmp/to.txt
*/1 * * * *
项目 | 含义 | 范围 |
---|
第一个 “*” | 一小时当中的第几分钟 | 0-59 | 第二个 “*” | 一天当中的第几小时 | 0-23 | 第三个 “*” | 一个月当中的第几天 | 1-31 | 第四个 “*” | 一年当中的第几月 | 1-12 | 第五个 “*” | 一周当中的星期几 | 0-7(0和7都代表周日) |
- at任务调度机制
- at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。
- 默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
- at命令是一次性定时计划任务,执行完一个任务后不再执行此任务
- 在使用at命令时,必须保证atd进程的启动,可以使用如下命令来查看atd进程是否启动
ps -ef | grep atd
选项 | 描述 |
---|
-m | 当指定的任务被完成后,将给用户发送邮件,即使没有标准输出 | -I | atq的别名 | -d | atrm的别名 | -v | 显示任务被执行的时间 | -c | 打印任务的内容到标准输出 | -V | 显示版本信息 | -q <队列> | 使用指定的队列 | -f <文件> | 从指定文件读入任务而不是从标准输入读入 | -t <时间参数> | 以时间参数的形式提交要运行的任务 |
at [选项] [时间]
atq
atrm [任务号]
Linux磁盘分区机制
[root@localhost ~]
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 17G 0 part /
└─sda3 8:3 0 2G 0 part [SWAP]
sr0 11:0 1 1024M 0 rom
lsblk -f
fdisk /dev/sdb
? 分区中常用的一些命令
命令 | 描述 |
---|
m | 显示命令列表 | p | 显示磁盘分区 同fdisk -l | n | 新增分区 | d | 删除分区 | w | w写入并退出 |
步骤说明:开始分区后输入n,新增分区,然后选择p,分区类型位主分区,两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q
mkfs -t ext4 /dev/sdb1
mount [磁盘分区文件] [要挂载的目录]
umount [磁盘分区文件]
df -h
du -h
? 常用选项:
选项 | 描述 |
---|
-s | 指定目录占用大小汇总 | -h | 带计量单位 | -a | 含文件 | –max-depth=1 | 子目录深度 | -c | 列出明细的同时,增加汇总值 |
Linux网络配置
首先要修改Linux的ip地址,需要输入如下命令
vim /etc/sysconfig/network-scripts/ifcfg-ens33
并添加如下选项
BOOTPROTO="static"
IPADDR=192.168.200.130
GATEWAY=192.168.200.2
DNS1=192.168.200.2
然后再重启Linux或者重启网络服务
reboot 或 service network restart
hostname
vim /etc/hostname
vim /etc/hosts
ipconfig /displaydns
ipconfig /flushdns
Linux进程
ps -a
ps -u
ps -x
ps -ef
kill [选项] 进程号
killall 进程名称
kill -9 进程号
/bin/systemctl start sshd.service
选项 | 描述 |
---|
-p | 显示进程的PID | -u | 显示进程的所属用户 |
Linux服务管理
服务的本质就是进程,但是通常是运行在后台并监听某个端口,等待其他进程的请求,比如mysqld,sshd,防火墙等等,因此我们又称守护进程
- service指令:centos7后能使用service管理的服务在/etc/init.d中
service 服务名 [start|stop|restart|reload|status]
setup
systemctl get-default
systemctl set—default [运行级别target]
chkconfig --list [| grep xxx]
ckhconfig --level 5 服务名 on/off
- systemctl指令:可以在/usr/lib/systemd/system查看可管理服务
systemctl [start|stop|restart|status] 服务名
systemctl list-unit-files
systemctl enable 服务名
systemctl disable 服务名
systemctl is-enabled 服务名
firewall-cmd --permanent --add-port=端口号/协议
firewall-cmd --permanent --remove-port=端口号/协议
firewall-cmd --reload
firewall-cmd --query-port=端口/协议
选项 | 功能 |
---|
-d 秒数 | 指定top命令每隔几秒更新,默认是3秒 | -i | 使top不显示任何闲置或者僵死进程 | -p | 通过指定监控进程ID来仅仅监控某个进程状态 |
top [选项]
交互操作指令:
操作 | 功能 |
---|
P | 以CPU使用率排序,默认项 | M | 以内存的使用率排序 | N | 以PID排序 | q | 退出top |
netstat -an
netstat -p
RPM管理
rpm -qa [|grep xx]
rpm -qi 软件包名
rpm -ql 软件包名
rpm -qf 文件全路径
rpm -e 软件包名
rpm -e --nodeps 软件包名
rpm -ivh rpm包全路径名称
Yum管理
yum list[|grep xxx]
yum install 软件名
Linux Shell编程
推荐shell文件使用.sh后缀名
Shell变量
-
定义变量:变量名=值 -
撤销变量:unset 变量名 -
生命静态变量:readonly 变量名
#!/bin/bash
A=100
echo A=$A
unset A
readonly B=2
C=`date`
C=$(date)
注意:定义变量的时候等号两边不能加空格
设置环境变量
- export 变量名=变量值:将shell变量输出为环境变量/全局变量
- source 配置文件:让修改的配置信息立即生效
- echo $变量名:查询环境变量的值
shell脚本中的多行注释::<<! !
位置参数变量
$n:n为数字,$0代表命令本身,$1-
9
代
表
第
一
到
第
九
个
参
数
,
十
以
上
的
参
数
需
要
使
用
大
括
号
括
起
来
,
9代表第一到第九个参数,十以上的参数需要使用大括号括起来,
9代表第一到第九个参数,十以上的参数需要使用大括号括起来,{10}
$*:这个变量代表命令行的所有变量,所有变量为一个整体
@
:
这
个
变
量
与
@:这个变量与
@:这个变量与*类似,但是会把每个参数区分对待
$#:这个变量代表命令行的参数个数 顺序排列输出 netstat -p # 显示哪个进程在调用
# RPM管理
```bash
rpm -qa [|grep xx] # 查询当前系统安装的rpm包
rpm -qi 软件包名 # 查询软件包信息
rpm -ql 软件包名 # 查询软件包中的文件
rpm -qf 文件全路径 # 查询文件所属的软件包
rpm -e 软件包名 # 删除指定软件包
rpm -e --nodeps 软件包名 # 强制删除软件包
# 安装rpm包 i=install安装 v=verbose提示 h=hash进度条
rpm -ivh rpm包全路径名称
Yum管理
yum list[|grep xxx]
yum install 软件名
Linux Shell编程
推荐shell文件使用.sh后缀名
Shell变量
-
定义变量:变量名=值 -
撤销变量:unset 变量名 -
生命静态变量:readonly 变量名
#!/bin/bash
A=100
echo A=$A
unset A
readonly B=2
C=`date`
C=$(date)
注意:定义变量的时候等号两边不能加空格
设置环境变量
- export 变量名=变量值:将shell变量输出为环境变量/全局变量
- source 配置文件:让修改的配置信息立即生效
- echo $变量名:查询环境变量的值
shell脚本中的多行注释::<<! !
位置参数变量
$n:n为数字,$0代表命令本身,$1-
9
代
表
第
一
到
第
九
个
参
数
,
十
以
上
的
参
数
需
要
使
用
大
括
号
括
起
来
,
9代表第一到第九个参数,十以上的参数需要使用大括号括起来,
9代表第一到第九个参数,十以上的参数需要使用大括号括起来,{10}
$*:这个变量代表命令行的所有变量,所有变量为一个整体
@
:
这
个
变
量
与
@:这个变量与
@:这个变量与*类似,但是会把每个参数区分对待
$#:这个变量代表命令行的参数个数
|