linux 中执行python文件 : ./info.py
查看python路径 : which python3
#!/usr/local/bin/python3 : 表示声明操作系统使用指定的python解释器去执行
其中#有三种含义:
1 表示一个注释,
2 表示指定文件编码格式
3 表示操作系统直接执行文件选择的解释器
Ubuntu软件安装
mac: .dmg
linux: .deb
windows: .exe
远程访问SSH
#安装ssh
yum install openssh-server -y
#linux /etc 是全局配置文件
#vi /etc/ssh/sshd_config #这是ssh的配置文件
#Port : 端口号 默认22
#ListenAddress :允许访问的地址 默认0.0.0.0任意地址
#PermitRootLogin : root用户登录权限 yes
#PasswordAuthentication : 使用密码作为验证方式 yes
#:wq 保存退出
#service sshd restart #重启ssh服务
#systemctl stop|start|restart sshd.service #重启ssh服务
#检查当前主机是否开启22端口
netstat -an | grep 22
ssh 用户名@ip:端口
ssh root@47.103.105.184
基本命令
#查看ip地址,不能查看公网
ifconfig
ip addr
#验证对方网络是否连通
ping IP/域名
#查看命令 指定路径下的文件和子目录\链接
ls
#查看当前路径
pwd
#切换路径
cd 回到家目录
cd . 当前路径
cd .. 上级路径
cd ~ 回到家目录
cd / 去根目录
cd - 回到上一次操作的目录
cd /etc/abcd 前往指定的目录
#[root@localhost ~]# : [root用户名@主机名 路径]#
#[hal@localhost ~]$ : [hal@localhost ~]$
#关机重启
#ssh root@10.11.54.36
init 0 #立马关机
shutdown now #立马关机 不用
shutdown -h +5 "注意保存5分钟以后关机" #延迟关机
shutdown -h 15:43 "注意保存15:43分钟关机" #指定时间关机
shutdown -c #取消关机命令
shutdowm -r 15:43 "注意保存15:43分钟关机" #重启
reboot #立马重启
init 6 #立马重启
#时间和日历
date #时间日期
cal #日历
#上下键可以查询历史输入记录
Linux中的系统目录
/:根目录,文件的最顶端,/etc、/bin、/dev、/lib、/sbin 应该和根目录放在同一个分区,/usr/local 可以单独放置一个分区
/bin :存放系统所需要的重要命令,ls,cp,mkdir 等,usr/bin 也存放了一些系统命令,这些命令对应的文件都是可执行的,普通用户可以使用大部分的命令,其实就是一些二进制文件。
/boot:存放Linux启动时内核及引导系统程序所需要的核心文件,内核文件和grub 系统引导管理器都位于此目录
X/dev:存放Linux 系统下的设备文件,如光驱,磁盘等。访问该目录下的某个文件相当于访问某个硬件设备,常用的是挂在光驱
/etc:一般存放系统的配置文件,作为一些软件启动时默认配置文件读取的目录,如
/etc/fstab存放系统分区信息
/home:系统默认的用户主目录
X/lib:主要存放动态链接库
X/lost+found:存放一些当系统以外崩溃或机器意外关机时产生的文件碎片
X/mnt:用于存放挂载储存设备的挂载目录
/proc:存放操作系统运行时的运行信息,如进程信息、内核信息、网络信息,如/etc/cpuinfo存放CPU的相关信息。process
/root:Linux超级权限用户的root目录
/sbin:存放一些系统管理的命令,一般只能由超级权限用户root执行。
/tmp:临时文件目录,任何人都可以访问。系统软件或用户运行程序如MySQL时产生的临时文件存放到这里,此目录数据需要定期清除。中号数据不可放置在此目录下,此目录空间不宜过小
/usr:应用程序存放目录,如命令、帮助文档等。安装Linux软件包时默认安装到/usr/local目录下
/data :存放各种类型数据库文件的
X/var:这个目录的内容经常变动的,/var/log用于存放系统日志,/var/lib存放系统库文件等。
X/sys:目录与/proc类似,是一个虚拟的文件系统,主要记录与系统核心相关的信息,入系统当前已经载入的模块信息等。这个目录实际不占磁盘容量。
X/media 媒体设备,可以挂载一些设备到这里
X/opt 可选的附加程序,有时候一些软件安装的地方
LS
ls : 显示当前目录下所有的文件和文件夹
ls 目录路径 : 显示指定目录下的文件和文件夹
常用参数
-a : 显示目录下所有文件
linux里面,以点开头的文件都是隐藏文件
-l : 以列表的形式显示所有文件
-s : 以kB显示文件大小
-R : 递归的显示目录下面所有的文件(yum install tree -y)代替
ls -ano
LL
ll之后显示的文件详细信息的内容
第一列:文件的类型
d:目录
-:文件
l:链接
c:字符设备
b:块设备
第二列到第十列:文件的权限
第十一列:就是一个点,如果开启了selinux,前面就有点,如果没有开启的时候,创建的目录就没有点
第十二列:
目录:子目录的个数
文件:硬链接的个数
第十三列:该文件属于哪个用户
第十四列:该文件属于哪个组
第十五列:文件大小
第十六列-第十八列:文件的创建时间
第十九列:文件的名字
VI/VIM编辑器
vi:原生自带的
vim:vi的增强版,需要安装: yum install vim -y
简单使用:
1、vi 文件名 如果文件不存在,则创建之,如果存在,则打开之
2、一进来这个界面称之为vi的指令模式
3、输入小写字母 i(insert) 进入到编辑模式(插入模式)
4、编辑你的文件
5、先按一下 esc ,退出编辑模式到指令模式
6、输入 : 该冒号为英文冒号,进入到底行模式
7、输入 wq 保存并退出
vim的用法(vi和vim一样)
指令模式:vi一进来就是该模式
编辑模式:按i切换到该模式
底行模式:输入英文冒号进入底行模式
命令模式-->编辑模式
i:直接在当前光标处开始编辑
I:从光标所在行第一个非空字符开始编辑
a:在光标后一个开始编辑
A:在光标所在行的末尾开始编辑
o:在光标所在行下一行,另起一行开始编辑
O:在光标所在行上一行,另起一行开始编辑
s:删除光标所在字符开始编辑
S:删除光标所在行开始编辑
命令模式下的快捷键
gg:光标快速定位到第一行行首
G:光标快速的定位到末行行首
ngg:光标快速定位到第n行行首
^ : 光标快速定位到该行行首
$ : 光标快速定位到该行行尾
dd:删除光标所在行
ndd:删除光标下n行
yy:复制光标所在行
p:粘贴到光标的下面
nyy:复制光标下n行
np:粘贴n次
u:撤销到上一次操作 undo
:删除文件所有内容
ctrl+f : 下一页 forward
ctrl+b: 上一页 back
ctrl+d: 向下翻半页 down
ctrl+u: 向上翻半页 up
zt:将光标所在行放到屏幕的最顶部 top
zb:将光标所在行放到屏幕的最底部 bottom
zz:将光标所在行放到屏幕正中间 中间
底行模式下的指令
:set nu 显示行号
:set nonu 取消显示行号:
查找字符串
:/香水 先按enter,然后按n找下一个,按N找上一个 从上往下找
:?香水 先按enter,然后按n找下一个,按N找上一个 从下往上找
字符串替换
:s/闺蜜/小蜜 将光标所在行的第一个闺蜜替换为小蜜
:s/闺蜜/小蜜/g 将光标所在行的所有闺蜜替换为小蜜
:n,s/闺蜜/小蜜 将指定行的第一个闺蜜替换为小蜜
:n,s/闺蜜/小蜜/g 将指定行的所有闺蜜替换为小蜜
:%s/闺蜜/小蜜 将每一行的第一个闺蜜替换为小蜜
:%s/闺蜜/小蜜/g 将每一行的所有闺蜜替换为小蜜
:wq 保存并退出
:q 不保存退出
:q! 不保存,强制退出
:x 保存并退出
:wq! 强制保存退出
shift+zz 保存并退出
简便操作
vim demo.txt +15 打开文件并且指定到第15行
vim demo.txt + 打开文件并且指定到尾行
当非法关闭正在编辑的文件的时候,再次打开文件会有提示信息,这个时候不要慌,不要急,敲enter就可以进来,如果想要保存上次写的东西 vi -r 1.txt
将产生的交换文件删除掉 rm .1.txt.swp
#vim的配置文件vim /etc/vimrc
1.添加永久显示行号
vim /etc/vimrc +
2.在最后一行添加:set number
3.然后:wq
创建命令
#创建文件
touch 文件的路径
vim 路径:wq
#创建目录
mkdir 路径
-p 递归创建
移动命令
mv 源路径(相对的,绝对的) 目标路径
mv 源名称 新名称
mv 源路径/源名称 目标路径/新名称
拷贝命令
cp 源路径(相对的,绝对的) 目标路径 #复制
cp 原来的名称 原来的名称.back #文件备份
cp -r 文件夹名称 新名称 #递归拷贝目录
删除命令
rm 文件路径 # 删除普通文件
rm -f 文件路径 # 强制删除普通文件
rm -r 文件路径 # 删除目录
rm -rf 文件路径 # 强制删除目录
查看命令
cat 文件路径 #查看文件内容
tac 文件路径 #逆序查看文件内容
head -n 文件路径 #默认查看10行
tail -n 文件路径 #默认查看10行
more 文件路径 #enter向下 space向下一页 q推出
less 文件路径 #enter向下一行 space向下一页 pageup pagedown
#:/靓女
wc 文件路径 # 查看行数 字节数 文件名
输出
echo str|num|varables
#变量定义,等于号两边不能有空格
abc=123
#输出变量,变量前面一定要带有$
echo $abc
重定向
#/etc/vimrc #vim配置项
echo "123" > 2.py #覆盖重写
echo "set nu" >> /etc/vimrc #文件的尾部追加
用户管理
用户和组是直接挂钩的
一个用户只能属于一个组
一个组可以包含多个用户
所有的软件要安装,都需要建立用户[伪用户],使用伪用户创建文件和文件夹的
#查看用户
cat /etc/passwd
#root:x:0:0:root:/root:/bin/bash
#第一项 root 用户名
#第二项 x 权限
#第三项 0 用户id
#第四项 0 用户组id
#第五项 root 用户组名称
#第六项 /root 用户home目录
#第七项 /bin/bash shell语言类别
#创建用户
useradd 用户名
-g : 组编号(如果不写,则使用uid作为组编号)
-u : 指定用户id(如果不写自动增长)
-d : 指定分配家目录(不过写那么使用用户名作为家目录)
#useradd admin1 -g 0
#设置密码(修改密码)
passwd 用户名
#连续输入两次密码(中间的所有提示可以忽略[密码不一致])
#修改用户
usermod 用户名
-g : 组编号(如果不写,则使用uid作为组编号)
-u : 指定用户id(如果不写自动增长)
-d : 指定分配家目录(不过写那么使用用户名作为家目录)
-l : 新的用户名 原来的名称
#修改用户名
#1.退出被修改的用户
#2.修改命令
#3.将原先的家目录重命名
#usermod -l adminsuper admin1 -d /home/adminsuper
#mv admin1 adminsuper
#去除用户
userdel 用户名 #仅仅删除用户名 不删除家目录
userdel -r 用户名 #全部删除
组管理
#用户
#切换用户
sudo su #借用管理员账户
#大部分的用户不在/etc/sudoers之中
#使用root用chmod 640 /etc/sudoers
#vim /etc/sudoers +
#添加 adminsuper ALL=(ALL) ALL
#adminsuper可以使用root权限了
sudo yum install mysql
#查看组
cat /etc/group
#添加
groupadd 组名
-g 指定组id
#修改
groupmod
-g 修改组id
-n 修改组名 # groupmod -n 新名字 旧名字
#删除
groupdel 组名
#如果一个组是某个用户的主组,那么这个组不允许被删除,你需要首先删除这个用户
#如果一个组是系统自动为用户创建的,那么删除用户的时候会自动将这个同名的组给删除掉
文件权限
类型 | 描述 | 数值 |
r | 可读 | 4 |
w | 可写 | 2 |
x | 可执行 | 1 |
- | 空 | 0 |
#Linux写法 二进制编码 权值 描述
--- 000 0 无权限
--x 001 1 可执行[目录]
-w- 010 2 可写
-wx 011 3 可写执行
r-- 100 4 可读
r-x 101 5 可读可执行
rw- 110 6 可读可写
rwx 111 7 可读可写写执行
#该用户 组内用户权限 其它用户权限 编号
文件: rw- r-- r-- 644
目录: rwx r-x r-x 755
#修改权限
文件: chmod 777 文件名称 # chmod 777 /home/demo/*.py
目录: chmod 777 目录名称 #只修改当前目录权限,子文件权限不变
chmod -R 777 目录名称 #把目录下所有的文件统一权限
#修改权限
#u:user(用户) g:group(组) o:other(其它)
chmod u+w,g+x,o+x 1.py #给用户添加w,组添加x,其他用户添加x
chmod u+w,g+x,o-x,o-w 1.py #给用户添加w,组添加x,其他用户去除wx权限
#将文件重新分配给用户和组
#-rw-r--r--. 1 root(创建用户的昵称) root(创建组的昵称)
#用户所属权更替
chown adminsuper /root/1.py #把/root/1.py所属权交给adminsuper
#组所属权更替
chgrp sankou /root/1.py #把/root/1.py所属权交给sankou组
文件搜索
#find 查找命令
#语法 : find [路径] [参数]
#-name 按照文件的名称进行查找
#-size 按照文件大小进行查找 10k(=10kb) +10k(>10kb) -10kb(<10kb)
#-user 按照所属用户名
#-group 按照组名
#-maxdepth -mindepth 按照层级进行查找
#-ctime 按照创建的时间查找[写到天2019/8/8]
find / -name *.txt #从根目录开始查找所有的txt文件
find /root -name *销售额.csv #从/root目录开始查找所有的指定文件
find / -name *.sh -size +10k #从根目录开始查找所有的大于10kb的sh文件
find / -maxdepth 4 -mindepth 2 -name *.sh #从根目录开始查找所有2-4层级之间的所有文件
#模糊
whereis 软件名称
文件内容搜索
#grep 内容匹配命令
#语法 : grep [关键字] [路径] [参数]
#-c 内容个数
#-i 不区分大小
#-n 显示内容行号
#-r 递归查找
#-l 只显示文件名
#-E 正则匹配
#--color=auto 显示高亮
grep 无聊 /root/* #从/root下所有的文件中搜索 关键字
grep 无聊 /root/* -l #从/root下所有的文件中搜索 关键字 返回文件名
grep -E '.*?' /root/* #正则匹配
管道命令
#查找指定内容的
#把上一组的信息传递给下一组命令执行再处理
ls /etc | grep pki #先执行ls /etc,把上个命令中的内容交给grep pki,返回结果
ps -aux | grep sshd | grep -v grep #进程管理,不显示grep进程
上传和下载
#ssh+copy=scp
#上传语法
scp -r 需要被上传文件夹路劲 用户名@IP地址:路径
#下载语法
scp -r 用户名@IP地址:下载的文件路径 当前的保存路径
建立主机信任
不需要密码验证
需要使用ssh
#Windows或Mac OS
#那么需要依赖终端
#单项加密 : MD5 SHA256
#普通加密 : 加的过去,解的回来base64
#RSA:public-key private-key 公共钥匙给对方
#1.需要生成RSA非对称加密
ssh-keygen -t rsa #默认使用rsa
#2.找到用户home目录中的.ssh
id_rsa是私钥
id_rsa.pub是公钥
#把公钥发送给想要免密登录的主机的home目录下的.shh/authorized_keys
#authorized_keys 服务器中记录可以免密登录的钥匙
scp -r /c/Users/asus/.ssh/id_rsa.pub root@47.103.105.184:/root/.ssh/10.11.54.20.id_rsa.pub
#对方服务器需要切换路径 cd /root/.shh
#对方服务器需要把公钥追加到authorized_keys
cat 10.11.54.20.id_rsa.pub >> authorized_keys
软硬链接
为了解决文件或目录共享问题的
#硬链接
#语法 : ln 源文件路径 指定展示路径
#相当于给文件起了一个别名,硬链接不能给目录创建,用户和组不动
#差不多就是复制
#软链接
#语法 : ln -s 源文件路径 指定展示路径
#真正的快捷方式,当源文件丢失,链接会变成死链接,如果重新创建了一个源文件,链接恢复
#软连接可以对文件和目录作用
压缩和解压
#win : rar zip 7zip
#Mac : zip
#Linux : gzip tar bzip
zip\unzip
处理windows中.zip的文件格式
gzip\gunzip
.gzip #文件格式
(1)不保存源文件
(2)不能打包压缩
bzip2\bunzip2
.bzip #文件格式
(1)默认不能打包压缩
(2)-k 保存源文件
tar(解压和压缩)
#比gzip和bzip功能强大,基于gzip和bzip的
(1)gzip : .tar.gz
(2)bzip : .tar.bz
参数:
-c : 打包文件或文件夹
-z : 使用gzip格式压缩(默认)
-j : 使用bizp2格式压缩
-f : 指定压缩的名称,把尾缀名放到最后
-v : 显示执行过程
-x : 解压
#压缩语法 : tar -zcvf 压缩包名称.tar.gz 文件名称
# tar -jcvf 压缩包名称.tar.bz 文件名称
#解压语法 : tar -xvf 压缩包名称.tar.gz
# tar -jxvf 压缩包名称.tar.bz
服务和进程
#在计算机系统中,service就是一个应用 : MySQL Python Anaconda3
#进程管理
#进程
ps
参数:
-e : 显示运行时间(TIME) 进程的ID(PID) 应用的名称(CMD)
-f : 显示命令内容
-a : 当前进程信息
-u :USER(用户) PID(进程ID) %CPU(CPU消耗) %MEM(内存消耗) COMMAND(备注信息)
-x : 所有信息
ps -aux #查看综合所有信息
ps -ef #查看综合所有信息
ps -aux | grep sshd | grep -v grep #查看ssh服务是否开启
#强制终止某个程序
kill -9 PID
#开启服务
service sshd start|stop|restart|status
systemctl start|stop|restart|status sshd.service
#守护进程,后台运行项
#unix PID=1 #Linux基于Unix再封装
#tcp PID=1023 #等待链接
netstat -lnp
#进程的全局信息
top|htop
软件安装
yum源安装
wget远程下载安装 : 脚本安装和编译安装
#yum是Centos的软件'商店'
#yum有很多的源 : 网易源 清华源 中科大源 阿里源 等等
#安装网络下载器
yum install wget -y
#配置源(网络不佳):
#源的存储位置 cd /etc/yum.repos.d/
#以前的源要么保留备份,要么删除
mv CentOS-Base.repo CentOS-Base.repo.back
#在网络中下载新的源文件 web-get
wget http://mirrors.aliyun.com/repo/Centos-7.repo
#对ali源备份
cp Centos-7.repo Centos-aliyun.repo
#将ali源修改成Base
mv Centos-7.repo CentOS-Base.repo
#清空源的缓存
yum clean all
#从新生成缓存
yum makecache
#更新源
yum update
#安装
yum install 软件名 -y
#卸载
yum remove 软件名 -y
#显示所有安装
yum list
#搜索源仓库中的软件
yum search 软件
#只下载不安装
#yum download 软件
-- downloadonly #只下载不安装
-- downloaddir=路径 #指定下载到什么路径
#redhat系列的包后缀名都叫rpm
#安装
rpm -ivh 包名
#卸载
rpm -e 包名
#其它项
rpm -ql 查询包的安装路径
rpm -qa 查询所有的相关项
rpm -qi 显示包信息
#编译安装
#编译安装的软件如果需要卸载,需要手动查询安装路径,逐个删除
#1.centos7 的yum源目前支持的python版本是3.5,所以要安装3.7版本只能在官网下载
yum -y install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel wget
#2.#wget是网络下载获取的工具
wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz
#3.#gcc是C语言的编译工具,我们的linux和python或者其它的文件都是由C语言构成的.所以要使用gcc作为依赖包
yum -y install gcc
#4.#python的编译依赖
yum -y install zlib zlib-devel
#5.#tgz压缩包解压
tar -zxvf Python-3.7.5.tgz
cd Python-3.7.5
yum -y install gcc
#6.把Python3.7安装到 /usr/local 目录
./configure --prefix=/usr/local [--with=ssl]
make install
========================================================
cd /usr/local/bin
./python3.7
./pip7
#卸载编译的软件
whereis python3
#全部删除
rm -rf /usr/local/lib/python37
Git代码云仓库
#我们在公司写脚本,把脚本上传到git中,防止代码丢失损坏
#中国国内有很多的免费仓库可以使用gitee(码云)
#下载git
#windows中百度下载,git-bash
#mac : brew install git
#linux : yum install git
#git配置
git config --global user.name "ruidong"
git config --global user.email "this_my_email@126.com"
#克隆代码
git clone https://gitee.com/ruidong/demo1.git
#把本地新文件同步到云端
#.git 本地缓存文件
git add . #1.把新的变化记录到本地缓存中
git commit -m "添加了2.py和demo.ipynb" #2.把缓存信息告知给云端
git push --all #3.将文件推送到云端
#每天早上跟新
git pull