Linux 系统
2020-12-28 11:18:52 2 举报
AI智能生成
登录查看完整内容
Linux系统入门教程
作者其他创作
大纲/内容
Linux 系统
基础篇
Linux 方向
Linux 运维工程师
Linux 嵌入式工程师
Linux 应用领域
个人桌面应用领域
服务器应用领域
嵌入式应用领域
CentOS 网络连接三种形式
桥连接
好处: 通讯比较畅通
坏处: 可能会造成ip冲突
NAT模式
主机模式
你的Linux是一个独立的主机不能访问外网
vmtools安装
介绍
Linux 目录结构
经典的一句话 font color=\"#c41230\
具体结构
bin
sbin
home
存放font color=\"#c41230\
root
该目录为font color=\"#c41230\
lib
etc
所有的系统管理所需要的配置文件和子目录
user
boot
proc
srv
sys
目录下安装了2.6内核中新出现的一个文件系统
tmp
该目录存放一些临时文件
dev
media
font color=\"#c41230\
mnt
系统提供该目录是为了font color=\"#c41230\
opt
给主机安装软件所摆放的目录
user/local
这是另一个font color=\"#c41230\
var
该目录font color=\"#c41230\
selinux
总结
linux 目录中有且只有一个根目录
实操作篇
vi 和 vim 编辑器
所有的linux 系统都会内建 vi文本编辑器
三种常见模式
正常模式
插入模式
按下 font color=\"#c41230\
命令行模式
常见快捷键命令
拷贝当前行 yy 然后p粘贴
删除当前行 dd (如果删除n行 ndd)
查找某个字符串 /查找的字符串 通过n下一个字符串
查看文件行数 set nu 取消行数 set nonu
到文档最末行直接输入[G] 到最首行[gg]
将光标移动到指定的行数 shift +g
重启/关机
shutdown -h now 立即关机
shutdown -h 1 一分钟后关机
shutdown -r now 立即重启
reboot 重启
用户注销
logout 注销这个指令在图形运行级别是无效的
用户相关
用户管理
创建用户
useradd tom
指定hom/具体文件夹如何指定呢
user add -d /home/target xm
修改用户密码
passwd tom
删除用户
userdel tom
userdel -r tom
查询用户信息
id tom(tom为用户名)
切换用户
su - tom(用户名)
用户组
查看当前登录用户的用户组
whoami
增加组
groupadd wudang
删除组
groupdel wudang
用户与用户组
增加用户的时候指定用户组
创建用户组 groupadd wudang
useradd -g wudang zwj
修改用户的用户组
创建少林组 groupadd shaolin
usermod -g shaolin zwj
用户和组的相关配置文件
/etc/passwd
zwj:x:1001:1003::/home/zwj:/bin/bash
zwj
用户名
1001
用户id
1003
组id
/home/zwj
家目录
/bin/bash
shell
/etc/shadow
口令(密码)配置文件
/etc/group
wudang:x:1002:
wudang
组名称
1002
常用指令
linux 指令运行级别
0
关机
1
单用户(找回丢失密码)
2
多用户无网络服务
3
多用户有多网络服务
4
保留
5
图形界面
6
重启
虚拟开机按e -> 然后在utf8后面添加 init=/bin/sh -> ctrl+x 执行 -> passwd -> 执行 exec /sbin/init
帮助指令
man
man ls
help
help cd
文件目录类指令
显示当前工作路径的绝对路径 - pwd
显示当前目录的文件和目录 - ls
切换目录 - cd
目录的创建 - mkdir [-p创建多级目录] 文件名
删除目录 - rmdir
创建一个空文件 - touch
拷贝文件到指定目录 - cp
移除文件或目录 - rm 指令
移动文件与目录或重命名 - mv
查看文件内容 - cat
以全屏的方式按页显示(小型)文本文件的内容 - more
分屏查看大型文件内容(如日志) - less
> 输出重定向 和 >>追加
ls -l > 文件
列表的内容写入文件 a.txt (覆盖写)
ls -al >> 文件
列表的内容追加到文件 的末尾(不会覆盖)
cat 文件1 > 文件2
查看文件1的内容写入 文件中
echo 内容 >> 文件
指定内容到文件的末尾
输出内容到控制台 - echo
输出环境变量 echo $PATH
输出指定内容 echo 字符串
显示文件的开头信息 - head
head -n 5 文件
显示(日志)文件尾部内容 - tail
tail -f 文件
创建软连接
ln -s /root/ linkToRoot
删除软连接
rm -rf linkToRoot
显示全部历史指令
history
显示最近10个
history 10
执行某个查询出来命令
!行号
时间日期类指令
显示当前时间 - date
查看日历信息 - cal
搜索查找指令
find指令
find /home/ -name [hello.txt]
find /opt/ -user root
find / -size +20M
locate指令
grep 指令和管道符号 |
cat a.txt | grep -ni yes
压缩和解压指令
gzip /gunzip
gzip hello.txt
gunzip hello.txt.gz
zip / unzip
zip -r mypackage.zip /home/
unzip -d /opt/tmp/ mypackage.zip
tar 指令
解压到指定目录(指定目录必须存在)
tar -zxvf myhome.tar.gz -C /opt/
压缩文件
tar -zcvf a.tar.gz a.txt a1.txt
压缩指定目录下面的文件
tar -zcvf myhome.tar.gz /home/
组管理和权限管理
Linux 组基本介绍
文件/目录 所有者
查看文件所有者 - ls -ahl
修改文件的所有者
chown 用户名 文件名
组的创建
groupadd 组名称
groupadd monster
useradd -g monster fox
id fox
查看文件/目录所在组
ls -ahl 查看文件所在组
修改文件所在组
chgrp 组名 文件名
其它组
改变用户所在组
usermod -g 组名 用户名
usermod -d 目录名 改变该用户登录的初始目录
权限
-rw-r--r--. 1 tom1 bandit 0 12月 12 15:06 ok.txt
-
表示普通文件
d
表示目录
l
表示软连接
c
b
表示块文件[硬盘]
rw-
表示文件所有者拥有的权限 (r 读权限 w写权限 -没有权限)
rwx
作用到 文件
x代表可执行(execute)可以被执行
作用到 目录
x 代表可执行(execute)可以进入该目录
r--
表示 文件所在组的用户只拥有读的权限
表示文件其它组拥有的读权限
如果是文件表示硬链接个数
tom1
属于那个用户
bandit
属于那个组
表示文件的大小 0个字节
如果是目录显示 4096
12月 12 15:06
文件最后的修改时间
修改权限 - chmod
chmod o+w
chmod a-x
栗子
修改文件所有者 - chown
chown tom1 abc (将abc文件用户修改为 tom1)
chown -R tom1 kkk/ (将kkk文件夹里面的所有文件都修改为 tom1)
修改文件所在的组 - chgrp
chgrp shaolin a.txt (把a.txt 的组修改为 shaolin)
chgrp -R shaolin kkk/ (将kkk文件夹内所有的组都修改为 shaolin)
定时任务调度 - crontab
每小时每1分钟执行都会自动调用 ls -l /etc
① crontab -e
② */1 * * * * ls -l /etc >> /tmp/tp.txt
参数说明
第1个 *
一小时当中的第几分钟 范围 0-59
第2个 *
一天当中的第几小时 范围 0-23
第3个 *
一个月当中的第几天 范围 1-31
第4个 *
一年当中的第几个月 范围 1-12
第5个 *
一周当中的星期几 范围 0-7(0和7都代表星期日)
特殊符号说明
*
-
代表连续的时间范围。比如 0 5 * * 1-6 代表在周一到周六的凌晨5点0分执行命令
*/n
最多支持四个主分区
系统只能安装在主分区
拓展分区要占一个主分区
mbr 最大只支持2TB 但拥有最好兼容性
windows 7 64位支持gtp
如何查看系统分区和挂载情况
lsblk [-f](老师不离开)
字段解释
NAME
分区情况
FSTYPE
分区类型
LABEL
UUID
唯一标识分区的40位不重复的字符串
MOUNTPOINT
挂载点
如何添加一块硬盘
vmware 设置硬盘添加硬盘 ...
fdisk /dev/sdb
mkfs -t ext4 /dev/sdb1
mount /dev/sdb1 /home/newdisk
编辑 /etc/fstab
/dev/sdb1 /home/newdisk xfs defaults 0 0
刷新使其生效 - mount -a
卸载已经存在分区
umount /dev/sdb1
磁盘情况查询
df -lh
du -h
工作中常用命令
统计/home 文件夹下文件的个数
ls -l /home | grep \"^-\" | wc -l
统计/home下面目录的个数
ls -l /home | grep \"^-\" | wc -l
ls -lR /home/ | grep \"^-\" | wc -l
ls -lR /home/ | grep \"^d\" | wc -l
以树状显示目录结构
yum install tree
网络配置
自动获取
指定固定的ip
修改配置文件
ONBOOT=\"yes\"
BOOTPROTO=static
IPADDR=192.168.73.110(后面的范围在 0-255之间)
GATEWAY=192.168.72.2(虚拟网络编辑器 -> Nat设置 -> 网关ip地址)
DNS1=114.114.114.114
重启服务
service network restart
问题
如果Windows无法ping 同linux 则需修改
本地网络 -> 网络连接 -> VMware Network Adapter VMnet8
如果Linux 无法ping 通 windows 或者无法ping通 www.baidu.com
nameserver 114.114.114.114nameserver 114.114.114.115
进程管理
进程的基本介绍
显示系统执行的进程 - ps
ps -aux | more (more 分页)
USER : 用户名
PID : 进程号
%CPU : 进程占用cpu的%比
%MEM : 占用内存的%比
VSZ : 占用虚拟内存的情况
RSS : 使用物理内存的情况
TTY : 使用的终端是哪一个
START : 系统启动时间
TIME : 占用cpu的总时间
COMMAND :线程启动命令行是怎么运行的
查询系统执行的父进程 - ps
ps -ef | more
PID : 进程ID
PPID : 父进程ID
终止进程 - kill / killall
-9 : 表示强迫进程立即停止
查看进程树 - pstree
yum -y install psmisc
服务管理
systemctl | start| restart| reload | status | stop [服务名]
如查看防火墙状态
systemctl status firewalld
细节讨论
如果希望设置某个服务自启动或者关闭font color=\"#c41230\
查看全部服务名及状态
systemctl list-unit-files
sudo systemctl list-unit-files
如查看 防火墙服务状态
systemctl list-unit-files | grep firewalld
监控网络状态
动态监控进程 - top
-d 秒数
-i
使top不显示任何闲置或者僵死的进程
-p
通知指定监控进程id 来仅仅监控某个进程的状态
top - 交互操作说明
P
以cpu的使用频率进行排序
M
以内存的使用率排序
N
以pid排序
q
退出app
查看系统网络情况 - netstat
安装 netstat : yum install net-tools
查看所有的网络服务
netstat -anp | more
RPM 和 YUM 远程包管理
RPM
简单查询指令 -rpm -qa | grep xx
查看软件包版本信息 -rpm -qi 软件包名
查询软件安装到什么地方 - rpm -ql 软件名
查询当前文件属于那个软件的 - rpm -qf file路径
卸载指令
rpm -e rpm包的名称
安装指令
rpm -ivh rpm包路径 (i 是install v是提示 h进度条)
YUM
查看安装软件是否存在 -yum list | grep xx
安装指定的包
yum -install xxx
查看
把图形化界面切换成命令行模式
下载图形化
yum groupinstall \"GNOME Desktop\" \"Graphical Administration Tools\"
获取当前模式
multi-user.target
切换成图形化界面
systemctl set-default graphical.target
reboot
Linux 之JavaEE 定制篇
JDK
上传到 /opt目录下
配置环境变量
/etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_231export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile
问题 ?
如果修改配置文件错误可能使linux命令失效
/bin/vi /etc/profile
tomcat
上传tomcat到/opt目录下
在 /bin目录下 启动tomcat
开放防火墙的 8080 端口
查看防火墙状态
systemctl status firewalld
查看防火墙开放的端口
firewall-cmd --list-all
开放 8080 端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
重启防火墙
firewall-cmd --reload
外网可以访问了
idea
把linux的命令行模式切换成图形化模式
在 bin/idea.sh 启动idea
mysql
nginx
http://nginx.org/en/download.html 官网下载 tar包 放在 opt目录下面
在解压的目录中 ./configure
大数据-Shell编程篇
Shell 是什么?
Shell 的快速入门
编写一个脚本输出 hello word
创建一个文件并添加内容
vim myshell.sh (.sh标识为 shell脚本)
给当前用户添加创建ehll的可执行权限
chmod u+x myshell.sh
执行的俩种方式
绝对路径
./myshell.sh
相对路径
/root/myshell.sh
如果不给可执行权限可以通过
sh ./myshell.sh
Shell 变量
系统变量
用户自定义变量
定义变量
变量 = 值
销毁变量
unset 变量
声明静态变量
子主题
Shell变量定义的规则
等号俩侧不能有空格
变量名称一般习惯为大写
将命令的返回值赋给变量
A=$(ls -la) 等价于反引号
Shell 设置环境变量
基本语法
export 变量名=变量值(将shell变量输出位环境变量)
source 配置文件(让修改的配置信息立即生效)
echo $变量明 (查询环境变量值)
全局环境变量
定义全部环境变量 /etc/profile
export 变量名=值
获取全局环境变量
$变量名
位置参数变量
$n
$*
$@
$#
这个变量代表着命令行中所有参数的个数
Shell 多行注释
:<<! 内容 !
预定义变量
$$
当前进程的进程号 PID
$!
后台运行的最后一个进程的进程号PID
$?
运算符
$((运算式)) 或者 $[运算式]
expr m+n
判断语句
常用判断条件
俩个整数的比较
= 字符串比较
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
按照文件权限进行判断
-r 有读的权限
-w 有写的权限
-x 有执行的权限
按照文件类型进行判断
-f 文件存在并且设计一个常规的文件
-e 文件存在
-d 文件存在并是一个目录
流程控制
if判断
案例
case 语句
应用案例
for循环
$@ 推荐使用
使用方式2
while 循环
read 读取控制台输入
read(选项)(参数)
-p : 指定读取时的提示符
变量 : 指定读取的变量名
应用实例
读取控制台输入一个num值
函数
系统函数
basename基本语法
basename /root/shell/fortest.sh
basename /root/shell/fortest.sh .sh
dirname基本语法
dirname /root/shell/fortest.sh
自定义函数
编写一个自定义函数计算俩个函数的和
#!/bin/bashfunction getsum(){ SUM=$[$n+$t]}read -p \"请输入第一个数\" nread -p \"请输入第二个数\" t#调用getsumgetsum $n $techo \"结果为 $SUM\"
综合案例
自定义shell脚本.sh
每日凌晨2点备份数据库
crontab -e
* 2 * * * /usr/sbin/mysql_db_backup.sh
Python 定制篇
无法为立即文档创建临时文件: 设备上没有空间
df -h
cd / && du -h -x --max-depth=1
0 条评论
回复 删除
下一页