一、认识Linux系统及基础命令
Linux中一切皆文件
1 构成
内核 + 文件系统 + shell = Linux
文件系统结构:文件进行读写
Linux是一个树形的文件系统结构
第一层目录:/ 整个文件系统的访问入口
2 重要的二级目录
bin:放Linux上常用的命令
dev:放设备的目录
etc:Linux配置文件目录
home:普通用户会在该目录下创建属于自己的目录
root:管理员用户家目录
media:即插即用型的设备的挂载目录
光盘自动挂载到media目录下
mnt:挂载目录
将硬盘中的分区(C/D/E)与目录进行关联
/datas/cpan 《- C分区
/datas/Dpan 《- D分区
/datas/Epan 《- E分区
opt:可选目录
usr:放安装的应用程序
sbin:只有管理员才能执行的命令
var:Linux日志默认存储目录
3 基础命令
ls : list,用于列举一个目录或者文件
ls [-ald] file_path
a:所有的:列举包含隐藏文件
.开头的为隐藏文件
l:长格式查看详细信息
ls -l = ll
d:列举本身
.为本身
cd:change directory 改变目录
用于切换工作目录
cd target_path
./为本身或当期目录,…/文上一级目录
相对路径:相对当前路径,依次进行访问
more target_file:分页查看文件内容
more /shell/startserver.sh
绝对路径:当访问文件或者目录时,从/目录开始访问
cd /shell/
more startserver.sh
pwd:print work directory 打印当前工作目录
clear:用于清屏
快捷键:Ctrl+l
whereis:用于查看某个命令的位置
whereis more
history:用于查看自己运行过的命令
回到顶部
二、文件管理命令:Linux中没有后缀之分
1 增:mkdir touch
创建文件夹 创建文件夹创建文件夹
mkdir [-p] dir_path
mkdir /root/test01
mkdir -p /root/test02/test
p:表示递归创建 p:表示递归创建p:表示递归创建
创建文件 创建文件创建文件
touch file_path
touch test01/file1
2 删、清空
rm−rffile/dir rm -rf file/dirrm−rffile/dir
r:递归,用于删除目录 r:递归,用于删除目录r:递归,用于删除目录
f:确认文件 f:确认文件f:确认文件
3 改:vim
vi/vim:Linux中的文本编辑工具
3.1 命令模式:刚刚打开时进入命令模式
i:进入插入模式 i:进入插入模式i:进入插入模式
yy:复制当前行 yy:复制当前行yy:复制当前行
10yy:复制从当前开始的十行 10yy:复制从当前开始的十行10yy:复制从当前开始的十行
p:粘贴 p:粘贴p:粘贴
dd:剪切当前行 dd:剪切当前行dd:剪切当前行
10dd:剪切从当前行开始的十行 10dd:剪切从当前行开始的十行10dd:剪切从当前行开始的十行
G:跳到最后一行 G:跳到最后一行G:跳到最后一行
gg:跳到第一行 gg:跳到第一行gg:跳到第一行
10gg:跳到第10行 10gg:跳到第10行10gg:跳到第10行
o:在下一行进行插入 o:在下一行进行插入o:在下一行进行插入
O:在上一行进行插入 O:在上一行进行插入O:在上一行进行插入
u:撤销上一步 u:撤销上一步u:撤销上一步
3.2 插入模式:在命令模式中按i,进入插入模式
退出插入模式进入命令模式:esc 退出插入模式进入命令模式:esc退出插入模式进入命令模式:esc
3.3 最后行模式:在命令模式下,按shift+:,进入最后行模式
进入命令模式:按esc
q:退出
wq:保存退出
!:强制的
x:保存退出
X:加密
set nu:显示行号
1,$s/nologin/1234/g
1:从第一行开始
$:最后一行
s:替换
g:如果一行出现多个,全部替换
4 查:more、cat、less、head、tail
cat:一次性读取所有文件内容
cat /etc/passwd
cat -n /etc/passwd
显示行号
more:分页查看,一页一页的显示
只能向下翻页,最后自动退出
less:分页查看
按q退出,可以上下翻页
head:查看文件的前多少行
head [-n] file_path
head -10 /etc/passwd
tail:查看文件的后多少行 tail:查看文件的后多少行tail:查看文件的后多少行
tail[−n]file tail [-n] filetail[−n]file_path pathpath
tail−10/etc/passwd tail -10 /etc/passwdtail−10/etc/passwd
−F:动态查看该文件的末尾 -F:动态查看该文件的末尾−F:动态查看该文件的末尾
$光标闪烁,等待更新 $
Ctrl+c退出 Ctrl+c退出Ctrl+c退出
5 复制
cp [-r] source_path target_path
cp /etc/passwd /root/
cp /etc/passwd /root/passwd2
$ -r表示递归,可以复制文件夹下的所有目录及文件,目标文件夹如果没有则递归创建$
拷贝过程中可以直接重命名
移动剪切:也可以实现重命名
mv source_path target_path
6 常见错误:
No such file or directory
意思:没有对应的文件或者目录
原因:
1-真的没有该文件或者目录,路径写错了
2-没有权限
Permission denied
意思:没有权限
原因:没有权限
解决:修改权限
-bash:cdd : command not found
错误:命令没有找到
原因
1-命令错了
cdd /
2-语法不对
cd/加粗样式
回到顶部
三、Linux中用户管理及权限管理
1 用户、组
默认用户:root 管理员用户
默认组:root
Linux默认自带的用户的id都在500以内,用户自己创建的用户id从500开始
用户配置文件:/etc/passwd
root❌0:0:root:/root:/bin/bash
用户名:密码:用户id:组id:组名称:家目录:使用的shell类型
1
2
3
4
5
6
2 管理用户
2.1 创建用户
-o:or 或者条件
useradd fuyun
2.2 删除用户
-r:删除时是否同时删除家目录
设置密码
passwd fuyun
修改用户名
usermod -l NewUser -d /home/NewUser -m OldUser
-l 修改用户名
-d 修改登录后使用的路径
-m 修改登录名称的同时将目录名称一同修改
切换用户
su - root
记得退出:exit
3 管理组
3.1 创建组
groupadd
3.2删除组
groupdel
3.3 更改组
chgrp
groupmod -n newGroup oldGroup
4 权限管理
所属用户
所有者 | 同组用户 | 其他人 | 所有人 |
---|---|---|---|
u | g | o | a |
权限
读 | 写 | 执行 | 没有权限 |
---|---|---|---|
r | w | x | - |
drwxr-xr-x:表示一个文件的所有权限
d | rwx | r-x | r-x |
---|---|---|---|
文件类型 | 所有者 | 同组用户 | 其他人 |
4.1 更改权限
chmod:用于修改某个文件或者目录权限的
chmod o+w /passwd
chmod a+x /passwd
chmod u+x,g-x /passwd
|r |w |x |
|— |— |---- |
|4 |2 |1 |
rwxrwxrwx:777
chmod 755 /passwd
chown:用于修改某个文件或者目录的所有者的
chown -R username:groupname file_path
−R:表示递归,用于修改目录时,将目录下所有的文件一起更改 -R:表示递归,用于修改目录时,将目录下所有的文件一起更改−R:表示递归,用于修改目录时,将目录下所有的文件一起更改
回到顶部
四、虚拟机管理
1 关机 :管理员才能执行
shutdown -h now
halt
init 0
2 重启
reboot
init 6
3 快照:关机状态下拍摄
4 克隆:用于复制多个机器的
五、Linux中常用的工具命令
1 sudo:用于普通用户越级执行管理的命令
visudo:用于配置sudo,只有管理员能通过该命令分配权限给普通用户
root ALL = (ALL) ALL
用户名 从什么地方登陆 以什么身份 执行什么命令
需求:配置rdedu用户拥有启动防火墙的权限
rdedu ALL=(root) /sbin/service iptables start
测试:
sudo service iptables start
rdedu ALL=(root) NOPASSWD:ALL
2 grep:用于数据过滤
grep ‘root’ /etc/passwd
3 常用工具符号
.:表示当前目录
…:表示上一级目录
~:代表家目录
|:管道符,用于数据流的转接
stdin
stdout
cat /etc/passwd | grep ‘root’
:输出重定向,覆盖
grep ‘root’ /etc/passwd > /grep_root.txt
:输出重定向,追加
grep ‘root’ /etc/passwd >> /grep_root.txt
<:输入重定向
基本上在shell脚本里使用
command1 < infile > outfile:同时替换输入和输出,执行command1,从文件infile读取内容,然后将输出写入到outfile中
&:表示后台运行
command &
\:换行符
`:执行符号
用执行符号包裹命令,将命令先执行后返回
回到顶部
4 man:用于查看某个命令的帮助文档
man top
man yum
按q退出查看
5 find:用于查找文件的
格式:find 路径 条件
find /etc -name init*
条件:
-name
*:匹配多个字符
?:匹配单个字符
ls /etc/init*
ls /etc/init??
-size:
find /etc -size +50(b,k,M,G)
+:大于
-:小于
并列条件和或者条件
-a:and 并列条件
-o:or 或者条件
find /etc -size +500k -a -size -1000k
-atime n:查询文件最后访问时间
n表示n*24小时之前
-ctime n:查询文件状态最后改变时间
-mtime n:查询文件数据最后修改的时间
-type f/d:查询文件或文件夹的类型
-user:查询文件的所有者
-group:查询文件的组
stat:查看文件信息
7 du:统计目录中的大小
du [-sh] dir_path
s:表示总的
h: 人性化显示单位
8 wc:做文本统计
wc [-lwc] file_path
l:行
wc -l /grep.txt
w:单词
wc -w /grep.txt
c:字节
wc -c /grep.txt
m:字符
可以统计多件文件
wc /grep.txt /root/install.log
回到顶部
六、磁盘管理
1 df -h:查看每个分区的信息
查看每个分区的磁盘利用率
挂载信息
2 fdisk:用于管理Linux中所有的硬盘设备
插入硬盘
查看硬盘信息
fdisk -l
对硬盘进行分区
分区:
主分区
1
扩展分区(建立逻辑分区)
1
fdisk /dev/sdb
1
格式化
mkfs.ext4 /dev/sdb1
挂载
临时挂载
mount /dev/sdb1 /primary_part
永久挂载
vim /etc/fstab
/dev/sdb1 /primary_part ext4 defaults 0 0
回到顶部
七、系统管理
1 网络管理
ifconfig:用于查看和配置网络信息
/etc/sysconfig/network-scritps/ifcfg-eth0
route -n:查看路由
![图片46:
2 端口
每个应用程序启动以后会开放相应的端口
netstat -atunlp | grep 22
3 服务管理
service:用于管理Linux中所有系统安装的服务
service service_name start|stop|status|restart
linux中通过service管理的服务程序地址:/etc/init.d/
常见服务:
iptables:防火墙
network:网络
service network restart
NetworkManager:图形化界面的网络管理服务
sshd:安装登录访问服务
chkconfig:设置开机启动
chkconfig service_name on|off|–list
chkconfig iptables --list
chkconfig iptables off:关闭防火墙
chkconfig service_name on
4 进程管理
top:Linux中的任务管理器
1
free:用于查看内存
free -m
ps:process 用于查看当前所有的进程
ps -ef
kill :用于对服务发送信号的
关闭进程:
kill -9 pid
kill -9 1680
jps:java process
专门用于查看java进程的
5 udp与tcp的区别
tcp更安全,发送第一个信息后等待对方确认收到后再发送后面的信息,发送时间缓慢
udp更快速,将所有信息发送给对方,不管对方收到没有,所以会导致信息丢失,不安全
1
2
回到顶部
八、Linux中的压缩
windows:rar/zip
Linux:gzip、bzip2、zip
.tar.gz/tgz/.tar.bz2
压缩类型:snappy、lzo、lz4
gzip:压缩为gzip格式
后缀:.gz
压缩:gzip file_path
gzip passwd
解压:gunzip file.gz
gunzip passwd.gz
特点:
1-压缩完源文件不存在了
2-不支持压缩文件夹
bzip2:压缩格式为bz2
后缀:.bz2
压缩:bzip2 file_path
bzip2 passwd
解压:bunzip2 file.gz
bunzip2 passwd.bz2
特点:
1-压缩完源文件不存在了
2-不支持压缩文件夹
1 tar:用于打包,将多个文件或者文件目录合并为一个文件
1.1 打包:将文件夹打包为压缩包 可以直接更改打包后的名称
tar -cvf test02.tar test02
1.2 解包:
tar命令是调用了gunzip命令的,对只有一个压缩内容的文件来解压的时候才用tar, 而如果压缩包里有多个文件被压缩了
tar -xf /root/test02.tar -C /
1.3 打包并压缩为gzip格式
tar -zcvf /test02.tar.gz test02
1.4 查看压缩文件内容
tar -tvf /test02.tar.gz
1.5 解压gzip格式的压缩文件
tar -zxvf /test02.tar.gz -C /tmp
将上面的命令中的z改为j,即为bzip2格式的压缩和解压
1.6 格式
压缩:tar -zcvf 压缩后的文件的路径 压缩谁
解压:tar -zxvf 解压谁 -C 解压到哪
查看:tar -tvf 压缩文件路径
1.7 参数
z:gzip格式
j:bzip2格式
c:打包
x:解包
v:显示过程
f:档名,文件名,f后面必须直接跟文件名
t:text,查看
C:指定解压的路径
c/x/t:一条命令中不能同时存在
1.8 unzip解压
如果压缩包里有多个文件被压缩了,可以采用unzip命令去解压
解压到当前文件:unzip a.zip
解压到指定文件:unzip a.zip -d a
回到顶部
九、Linux中的软件管理
window类型
exe、jar、msi、zip(免安装)
Linux
rpm:Redhat系列的软件包管理工具
dpkg:Debian系列的软件包管理工具
压缩:免安装,直接配置即可
源码:
先要安装编译需要的依赖
c/c++:
执行configured脚本文件:预编译
make:编译
make install :安装
java:
maven
编译:mvn complie
打包:mvn package
安装:mvn intall
清除:mvn clean
1 rpm : rpm包的管理命令
rpm包:每个软件厂商都会提供对应的软件的rpm包的版本
xxxxx.rpm
yum-presto-0.6.2-1.el6.noarch.rpm
yum-utils-1.1.30-30.el6.noarch.rpm
zd1211-firmware-1.4-4.el6.noarch.rpm
zenity-2.28.0-1.el6.x86_64.rpm
zip-3.0-1.el6.x86_64.rpm
zlib-1.2.3-29.el6.i686.rpm
zlib-1.2.3-29.el6.x86_64.rpm
zlib-devel-1.2.3-29.el6.i686.rpm
zlib-devel-1.2.3-29.el6.x86_64.rpm
zsh-4.3.10-7.el6.x86_64.rpm
rpm文件名称格式
zlib-1.2.3-29.el6.x86_64.rpm
rpm的名称-版本.操作系统.操作系统位数.rpm
1.1 查看
rpm -qa | grep zlib
1.2 安装
rpm -ivh file_path(完整的rpm文件名称)
rpm -ivh /media/CentOS_6.6_Final/Packages/zlib-devel-1.2.3-29.el6.x86_64.rpm
i:install安装
v:显示详细过程
h:标记
zlib-lib.rpm
zlib-util.rpm
zlib-deve.rpm
zlib.rpm
1.3 卸载
rpm -e zlib-devel-1.2.3-29.el6.x86_64
e:卸载
−−nodeps:不考虑依赖 --nodeps:不考虑依赖−−nodeps:不考虑依赖
rpm -e --nodeps tzdata-java-2014g-1.el6.noarch java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64 java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64
1.4 更新
rpm -U package
1.5 查询一个程序安装了哪些文件
rpm -ql package_name
rpm -ql zlib-1.2.3-29.el6.x86_64
查询某个命令来自于哪个安装包
rpm -qf /bin/ls
2 yum:基于rpm的软件仓库式的管理工具
####2.1 软件仓库:yum源
2.2 查看:yum list
列举的当前yum中所有可安装或者已安装的程序
只想查看已安装的程序
yum list installed
2.3 安装:yum install -y package_name
y:表示全部yes
yum install -y gcc
yum install -y lrzsz
2.4 卸载:yum remove -y package_name
yum remove lrzsz
回到顶部
十、Linux中的变量及表达式
1 自定义变量
1.1 定义:key=value
定义变量时等号两边不能有空格
语义可读
系统变量大写
没有数据类型
1.2 引用:
${a}
$a
2 环境变量:整个系统中的变量
2.1 全局环境变量:对所有用户生效
/etc/profile
系统环境变量:PATH=PATH: PATH:PATH:JAVA_HOME\bin
2.2 用户环境变量:每个用户拥有自己的环境变量,只对自己生效
每个用户在自己的家目录下有一个配置文件:
~/.bash_profile
3 位置变量:脚本中$1-$9,表示第一个到第九个参数
4 预定义变量:
$0:执行的文件名称
$#:参数的个数
$*:所有的参数
$?:上一条命令执行的结果
0:上一条命令正确执行了
5 常见的通配符与正则
5.1 通配符
*:匹配多个字符
?:匹配单个
大部分用于这些命令:ls find cp rm
5.2 正则
[]:某个范围的单个字符
[0-9]:表示0-9之间的任意一个字符
[a-z]
[A-Z]
.:单个字符
:匹配多个
.:匹配多个字符
:以什么开头:root.*bash$
中括号中表示非
[^ ]*
$:以什么结尾
grep
grep ‘r…t’ passwd
grep ‘^root’ passwd
grep ‘[0-9]:[0-9]’ passwd
sed:专门用于对Linux中文本行的处理
sed -i ‘1d’ passwd
sed ‘s/nologin/8888/g’ passwd
得到ip地址:
ifconfig | grep ‘inet addr’ | grep -v ‘127.0.0.1’ | sed ‘s/inet addr://g’ | sed ‘s/Bcast.*//g’ | sed ‘s/ //g’
awk:专门用于对Linux中文件列的处理
awk -F ‘:’ ‘{print $3}’ passwd
6 通用表达式
6.1 逻辑连接符
&&:与连接,第一个成功了,第二个才执行
||:或连接,第一个失败了,第二个才执行
;:无连接关系
6.2 内置判断测试
6.2.1 字符串
[ $a = $b ]
[ $a = $b ];echo $?
[ $a > $b ];echo $?
[ $a &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt; $b ];echo $?
[ $a != $b ];echo $?
-z:判断变量是否为空,空返回true,非空返回false
-n:判断变量是否不为空,不为空返回true
6.2.2 数值
[]:
-eq:等于
-ne:不等于
-gt:大于
-ge:大于等于
-lt:小于
-le:小于等于
[ $a -eq $b ];echo
?
(
(
)
)
:
高
级
语
言
(
(
? (()):高级语言 ((
?(()):高级语言((a==$b))
!= >= <= < >s
6.2.3 文件
-f:判断是否是一个文件
[ -f /etc ];echo $?
-d:判断是否是一个目录
-e:判断是否存在
-w:判断是否有可写 权限
-r:
-x:
6.2.4 运算
(
(
a
+
b
)
)
/
((a+b))/
((a+b))/((
a
+
a+
a+b))
$[ $a + $b ]
1
2
6.2.5 时间命令
获取当前系统时间
date
获取当前格式化时间
date +"%Y-%m-%d %X"
修改时间(必须为管理员账号才能修改,普通用可以用sudo)
date -s “2018-09-12 18:22:45”
获取前一天时间
date -d ‘-1 day’ +"%Y-%m-%d"
获取前两天时间
date -d ‘2 days ago’ +"%Y-%m-%d"
获取前两年时间
date -d ‘2 year ago’ +"%Y-%m-%d"
7 重点:脚本
7.1 脚本编写规范
1-必须声明头部,指定shell的类型
#!/bin/bash
2-运行脚本,必须有可执行的权限
chmod u+x location_var.sh
十一、shell脚本基础语法
1 循环
for:第一种
for 变量 in 集合
do
执行的命令
done
第二种
for((i=1;i<10;i++))
do
执行的命令
done
while:
while [表达式]
do
done
2 判断
if [条件表达式]
then
执行的命令
fi
if [条件表达式]
then
执行的命令
else
执行的命令
fi
if [条件表达式]
then
执行的命令
elif [条件表达式]
then
执行的命令
……
else
执行的命令
fi
并列条件
if [条件1] && [条件2] if [条件1] || [条件2]
if [ 条件1 -a 条件2] if [ 条件1 -o 条件2]
case :类似于java中的switch case
case 变量 in
value1)
怎么样?
;;
value2)
怎么样?
;;
*)
怎么样?
;;
esac
执行脚本的方式:
1-直接执行文件
2-使用sh命令执行
sh -x script.sh
十二、crontab定时任务
service crond status
at:简单的定时任务,不好用
crontab:可以实现分钟级别的精准任务调度
crontab -e : 编辑定时任务
* * * * * command
分钟 小时 日 月 周
00-59 00-23 1-31 1-12 0-7 sh /tmp/test.sh
每天凌晨3点执行脚本
00 03 * * * sh /tmp/test.sh
每周日中午12点30执行该程序
30 12 * * 7 sh /tmp/test.sh
每两个小时执行一次
00 */2 * * *
每天5点和7点执行一次
00 5,7 * * *
每天5点到7点
00 5-7 * * *
crontab -l :列举当前所有的定时任务
crontab -r : 删除所有的定时任务
crontab -u root -f /tmp/test.txt:
使用test.txt文件作为root用户的定时任务
————————————————
版权声明:本文为CSDN博主「浮云6363」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lz6363/article/details/82664130