# 1 linux历史:作者:内核 +GNU=发行版(readhat,centos,乌班图)
# 2 docker,在乌班图上开发完成,最新功能对它支持最好,乌班图内核比较新,centos上装docker,需要7版本以上(7.6)
# 3 GPL协议
# 4 Apache 服务器:
# 5 javase:基础 javaee:web开发(Struts) javame:手机开发
jdk:java 开发环境
jre:java运行环境
jvm:java虚拟机
xx.jar,aa.war
MVC:
-ssh :spring,Struts,hibernate(不需要写sql):国企还在用
-ssm:spring,springmvc,mybatis(映射:直接写sql)
-springboot:(sb像django),约定大于配置,简化配置,把tomcat打包到自己里面了
-微服务:spring cloud ---》处理了服务之间的调用,
-rpc框架:dubbo,grpc。。。。
-注册中心:Consul vs Zookeeper vs Etcd vs Eureka
# 一下或者两下tab建
# 一下的话会直接找到你要用的命令
# 两下,可能会用到的全列出来
# ifconfig 在7的版本没有,需要装软件
yum insatll net-tools -y
yum insatll net-tools
# yum install bash-completion -y 补齐选项
ls - 两下tab建,所有的选项都会提示出来
Ctrl + a #光标跳转至正在输入的命令行的首部
Ctrl + e #光标跳转至正在输入的命令行的尾部
Ctrl + c #终止前台运行的程序 ##################
Ctrl + d #在shell中,ctrl-d表示推出当前shell。
Ctrl + z #将任务暂停,挂至后台
Ctrl + l #清屏,和clear命令等效。 ##############
Ctrl + k #删除从光标到行末的所有字符
Ctrl + u #删除从光标到行首的所有字符
Ctrl + r #搜索历史命令, 利用关键字,Tab建选中,只能找到最近的一条
Ctrl + w #按单词或空格进行向前删除
Ctrl + 左右建 #按单词或空格进行向前向后跳
#在命令行前加面加 "#" 则该命令不会被执行
# history查看历史命令
# !数字 快速执行数字那一行
# !yum 快速执行最近一条yum命令
# history -d 70 把历史记录的第70行删除
# history -c 清空所有记录(连到人家服务器,操作完了,执行一下)
# history -w 可以把 历史记录写到用户家路径的.bash_history文件中
# 查看目录内容
ls
# 查看全部得文件
ls -a
sed "s/老的数据/新的数据/g" # 返回一个替换预览
sed "s/老的数据/新的数据/g" redis-6379.conf > redis-6380.conf
# 把数据输出到 redis-6380.conf
1 设置别名
alias www='ls /' 只在当前bashshell中生效
2 永久生效(全局,局部),
echo "alias wk='ifconfig'" >> /etc/bashrc
5 内置的别名:在环境变量的配置文件中放着
alias ls
6 /bin/ls -al /root # ls 内置了别名
8 man 全部命令查找
bin是Binary的缩写, 这个目录存放着最经常使用的命令。普通用户的命令
这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,
在Linux中访问设备的方式和访问文件的方式是相同的。
/dev,存放设备文件,比如硬盘,硬盘分区,光驱,等等
/dev/sd 硬盘设备
/dev/null,黑洞设备,只进不出。类似于垃圾回收站
/dev/random,生成随机数的设备
/dev/zero,能远远不断的产生数据,类似于取款机,随时随地取钱
这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/etc:极其重要,后续所有服务的配置都在这个目录中
/etc/sysconfig/network-script/ifcfg-:网络配置文件
/etc/hostname:系统主机名配置文件,主机名很重要,有些特殊服务要依赖主机名,没有主机名会报错起不来;修改了要重启:reboot
/etc/resolv.conf:dns客户端配置文件,域名解析服务器,一般我们不配置,因为网卡的配置好了,会覆盖掉它,网卡的优先级高
/etc/hosts:本地域名解析配置文件,域名解析,先找自己的hosts,再去域名解析
用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
一般默认登录就在home路径下(~代表家目录)
这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。
几乎所有的应用程序都需要用到这些共享库。
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
系统提供该目录是为了让用户临时挂载别的文件系统的,
我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
这是给主机额外安装软件所摆放的目录。第三方软件安装存放的位置
比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
这个目录是一个虚拟的目录,它是系统内存的映射,
我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,
比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
该目录为系统管理员,也称作超级权限者的用户主目录。
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
这个目录是Redhat/CentOS所特有的目录,
Selinux是一个安全机制,类似于windows的防火墙,
但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
该目录存放一些服务启动之后需要提取的数据。
这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、
针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
这个目录是用来存放一些临时文件的。
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,
类似于windows下的program files目录。
普通用户的命令存放地方
一般做软链接都是连到这里
普通用户的命令存放地方
超级用户使用的比较高级的管理程序和系统守护程序。
内核源代码默认的放置目录。
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。
包括各种日志文件。
1 cat /var/log/secure #查看用户登陆时间
/dev,存放设备文件,比如硬盘,硬盘分区,光驱,等等
/dev/sd 硬盘设备
/dev/null,黑洞设备,只进不出。类似于垃圾回收站
/dev/random,生成随机数的设备
/dev/zero,能远远不断的产生数据,类似于取款机,随时随地取钱
/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。
值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。
[root@dbj~]#
root:代表当前用户
dbj:主机名称
~:当前位置,默认家目录
#:代表超级用户,$:代表普通用户
# 选项:-v 显示详细信息 -p 递归创建目录
#递归创建a/b c/d
mkdir -p a/b c/d
#递归创建test/a,b,c,d四个目录
mkdir -p test/{a,b,c,d}
#递归创建文件夹a/b/c/d/e
mkdir -p a/b/c/d/e
# touch file #无则创建,有则修改时间
# touch file2 file3
# touch /home/od/file4 file5
# touch file{a,b,c} #{}集合,等价 touch a b c
# touch file{1..10}
# touch file{a..z}
#选项:-r: 递归 -f: 强制删除 -v: 详细过程
rm file.txt # 删除文件, 默认rm存在alias别名,rm -i所以会提醒是否删除文件
rm -f file.txt # 删除文件, 不提醒
rm -r dir/ # 递归删除目录,会提示
rm -rf dir/ # 强制删除目录,不提醒(慎用)
rm -rf file* # 强制递归删除以file开头的文件夹及文件
rm -rf *.txt # 强制递归删除以txt结尾的文件夹及文件
# mv file file1 #原地移动算改名
# mv file1 /tmp/ #移动文件至tmp目录:不一样mv file1 tmp
# mv /tmp/file1 ./ #移动tmp目录的文件至当前目录
# mv dir/ /tmp/ #移动目录至/tmp目录下
# touch file{1..3}
# mv file1 file2 file3 /opt/ #移动多个文件或至同一个目录
# mkdir dir{1..3}
# mv dir1/ dir2/ dir3/ /opt #移动多个目录至同一个目录
#选项: -v:详细显示命令执行的操作 -r: 递归处理目录与子目录 -p: 保留源文件或目录的属性
# cp file /tmp/file_copy
# cp name /tmp/name1 #修改名称
# cp file /tmp/ #不修改名称
# cp -p file /tmp/file_p #-p保持原文件或目录的属性
# cp -r /etc/ /tmp/ #复制目录需要使用-r参数, 递归复制
# cp -rv /etc/hosts /etc/hostname /tmp #拷贝多个文件至一个目录
# cp -rv /etc/{hosts,hosts.bak}
# cp -rv /etc/hosts{,-org}
# 打印当前位置
pwd
# 查看文件,显示行号
cat -n xxx.py
# 查看文件
cat a.py
# 追加文字到文件
cat >>a.txt << EOF
hello word
EOF
more命令用于查看内容较多的文本,例如要看一个很长的配置文件,
cat查看内容屏幕会快速翻滚到结尾。
more命令查看文本会以百分比形式告知已经看到了多少,使用回车键向下读取内容
more /etc/passwd
按下空格space是翻页
按下b键是上一页
回车键向下读取内容
echo命令用于在终端输出字符串或变量提取后的值,格式是 echo 字符串|$变量
# 默认把内容显示到终端上
echo "超哥666"
#超哥平时比较低调,不想让别人知道他666,怎么办?要么把“超哥666”写入到文件里!
echo "超哥666" > /tmp/chaoge.txt
# 取出打印PATH的值
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
输入/输出 重定向符号
1.>> 追加重定向,把文字追加到文件的结尾
2.> 重定向符号,清空原文件所有内容,然后把文字覆盖到文件末尾
3.< 输入重定向
4.<< 将输入结果输入重定向
echo "oldboy-python666" > /tmp/oldboy.txt
echo "chaoge666" >> /tmp/oldboy.txt
cat >>/tmp/oldboy.txt << EOF
------------------------------------
我想把命令执行的结果信息,写入到文件中
ip addr > /tmp/network.txt #标准输出重定向 把命令执行结果信息,放入到文件中
3.通配符
ls -l /etc/us*
# Linux里如何找到需要的文件 例如 oldboy.py
find 在哪里(目录) 什么类型(文件类型) 叫什么名字(文件名)
参数
-name 按照文件名查找文件
-type 查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
s - socket文件
find /tmp/ -type f -name "oldboy.py"
# 找出/tmp所有以 .txt 结尾的文件
find /tmp/ -type f -name "*.txt"
# 找到/etc下所有名字以host开头的文件
find /etc -name 'host*'
# 找到/opt上一个名为settings.py
find /opt -name 'settings.py'
Linux提供的管道符“|”讲两条命令隔开,
管道符左边命令的输出会作为管道符右边命令的输入。
常见用法:
# 检查python程序是否启动
ps -ef|grep "python"
# 找到/tmp目录下所有txt文件
ls /tmp|grep '.txt'
# 检查nginx的端口是否存活
netstat -tunlp |grep nginx
语法:
grep [参数] [--color=auto] [字符串] filename
参数详解:
-i : 忽略大小写
-n : 输出行号
-v : 反向选择
--color = auto : 给关键词部分添加颜色
grep "我要找什么" /tmp/oldboy.txt
# 排除 -v,排除我要找的东西
grep -v "我要找什么” /tmp/oldboy.txt
# 找出/etc/passwd下root用户所在行,以及行号,显示颜色
cat /etc/passwd |grep '^root' --color=auto -n
# 找出/etc/passwd所有不允许登录的用户
grep /sbin/nologin /etc/passwd
# 找到/etc/passwd的所有与mysql有关行,行号
cat /etc/passwd |grep 'mysql' -n
head显示文件前几行,默认前10行
tail显示文件后几行,默认后10行
# 查看前两行
head -2 /tmp/oldboy.txt
# 查看后两行
tail -2 /tmp/oldboy.txt
# 持续刷新显示
tail -f xx.log
# 显示文件10-30行
head -30 /tmp/oldboy.txt |tail -21
which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。
which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which pwd
which python
3 语法
scp 【可选参数】 本地源文件 远程文件标记
参数
-r :递归复制整个目录
-v:详细方式输出
-q:不显示传输进度条
-C:允许压缩
# 实例
#传输本地文件到远程地址
scp 本地文件 远程用户名@远程ip:远程文件夹/
scp 本地文件 远程用户名@远程ip:远程文件夹/远程文件名
scp /tmp/chaoge.py [email protected]:/home/
scp /tmp/chaoge.py [email protected]:/home/chaoge_python.py
scp -r 本地文件夹 远程用户名@远程ip:远程文件夹/
scp -r /tmp/oldboy [email protected]:/home/oldboy
#复制远程文件到本地
scp [email protected]:/home/oldboy.txt /tmp/oldboy.txt
scp -r [email protected]:/home/oldboy /home/
用法
du 【参数】【文件或目录】
-s 显示总计
-h 以k,M,G为单位显示,可读性强
# 实例
显示目录或文件所占空间
#什么都不跟,代表显示当前目录所有文件大小
du
#显示/home的总大小
du -sh /home
第一行 (uptime)
系统时间 主机运行时间 用户连接数(who) 系统1,5,15分钟的平均负载
第二行:进程信息
进程总数 正在运行的进程数 睡眠的进程数 停止的进程数 僵尸进程数
第三行:cpu信息
1.5 us:用户空间所占CPU百分比
0.9 sy:内核空间占用CPU百分比
0.0 ni:用户进程空间内改变过优先级的进程占用CPU百分比
97.5 id:空闲CPU百分比
0.2 wa:等待输入输出的CPU时间百分比
0.0 hi:硬件CPU中断占用百分比
0.0 si:软中断占用百分比
0.0 st:虚拟机占用百分比
第四行:内存信息(与第五行的信息类似与free命令)
8053444 total:物理内存总量
7779224 used:已使用的内存总量
274220 free:空闲的内存总量(free+used=total)
359212 buffers:用作内核缓存的内存量
第五行:swap信息
8265724 total:交换分区总量
33840 used:已使用的交换分区总量
8231884 free:空闲交换区总量
4358088 cached Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
更多请查看https://pythonav.com/wiki/detail/3/30/