Linuxvirtual_machine_operate
Linux分区
有时候你可能会发现,利用网上教程安装linux系统时,已经给根分区(“/”挂载点)配置了20GB的空间,但同时又要给home分区(“/home”挂载点)(或其他分区)再配置多20GB的空间。这么做的理由是什么?home分区不就是在根分区下面吗?那还给home分区配置内存空间有什么用呢
《Linux从入门到精通》里有一段话是这么说的:
既然Linux将文件系统挂载到目录下,那么究竟是现有文件系统还是先有目录?和“先有鸡还是先有蛋”一样,这个问题初看起来有点让人犯晕。正确的说法是,Linux需要首先建立一个根“/”文件系统,并在这个文件系统中建立一系列空目录,然后将其他硬盘分区(如果有的话)中的文件系统挂载到这些目录中。
理论上说,可以为根目录下的每一个目录都单独划分一个硬盘分区,这样根分区的容量就可以设置得很小
(因为几乎所有的东西都存放在其他分区中,根分区中的目录只是起到了“映射”的作用),不过这对于普通用户而言没有太大必要。
通过阅读书中上述文段,我的理解:
linux的根目录相当于一个“映射”的作用,安装linux时如果只给根目录配置了内存空间(假设它是sda1,相当于Windows的C盘),那么根目录下的所有目录可以认为是共用这个sda1的内存空间的。
而在给根目录配置了内存空间的基础上,再给home目录配置内存空间(假设它是sda2),那么这个home目录相当于已经独立出来一个分区了(相当于Windows的D盘)。home目录看似还存在于根目录的“里面”,其实已经构成了一个映射关系,在根目录中点击home目录,可以进到home的sda2分区,但是home目录的内存空间和根目录的内存空间是相互独立的(即相互不影响)。
应该可以这么说:在根目录下打开home目录(根目录和home目录分别配置了内存空间),相当于,在Windows的C盘中打开Windows的D盘。因此根目录内存空间和home目录内存空间互不影响。
Python:os.path.join()产生的斜杠在Windows和Linux下的不同表现和解决方法
问题描述
我一直以为Python是隔离了操作系统的差异,同样的function在不同操作系统下会有一致的结果,直到前几天临时切换到Windows下发现有些Python代码跑不出来,才发现如os.path.join()
这样的方法在不同操作系统下的表现是不一致的。
例如
在Linux/macOS下会显示
而在Windows下会显示
即 os.path.join()
在Linux/macOS下会以斜杠(/
)分隔路径,而在Windows下则会以反斜杠(\
)分隔路径。
原因分析
这种内置标准库方法的不一致从哪来的?官方文档实际上早就有明显的暗示了。
可见在安装Python时就会根据不同操作系统,仅使用对应操作系统类别的os.path
模块。如果顺着源码去看,就会发现os.path.join()
在Linux下是以斜杠(/
)作为分隔符的,而在Windows下则是以反斜杠(\
)作为分隔符的。
Mac的一些细节
为什么Windows要使用反斜杠(
\
)为什么Windows不使用斜杠(
/
),而独树一帜使用反斜杠(\
)呢,专门为了为难程序员?
解决方法
从上面的分析可以发现os.path.join()
仅包含对应操作系统类型的实现,所以我们无法通过指定参数的形式生成诸如适用于Linux或Windows的路径,那么如何解决这一问题呢?这里以在Windows下生成Linux格式(斜杠(/
)分隔符)路径为例来说明。
通过str.replace()
这是一种简单直接的方法,直接把Windows下os.path.join()
生成的反斜杠(\
)全部替换为斜杠(/
),如:
会得到
通过pathlib.PurePath.as_posix()
从Python 3.4开始可以通过pathlib.PurePath.as_posix()
来生成斜杠(/
)格式的路径,其实其实现原理和str.replace()
并没有太大区别。例如:
会得到
linux 查看python安装路径,版本号
一、想要查看ubuntu中安装的python路径
方法一:whereis python
方法二:which python
root@container-272b11bbac-5304541b:
# whereis python python: /usr/bin/python3.6 /usr/bin/python3.6m /usr/lib/python3.6 /usr/lib/python2.7 /etc/python3.6 /etc/python2.7 /usr/local/lib/python3.6 /root/miniconda3/bin/python /root/miniconda3/bin/python3.7 /root/miniconda3/bin/python3.7-config /root/miniconda3/bin/python3.7m /root/miniconda3/bin/python3.7m-config root@container-272b11bbac-5304541b:# which python /root/miniconda3/bin/python root@container-272b11bbac-5304541b:~#
二、想要查看ubuntu中安装的python版本号 python
修改默认python
查看默认安装位置
修改软链接指向
先看一下ln
命令的基本语法
注意:
创建软链接/快捷方式的时候,默认情况下,请确保这个软链接没有被创建过(名称要以前不存在的,只能新建,不能覆盖)
ln
命令无法将以前建立的软链接的指向做修改也就是说,如果想修改默认
python
这个软链接指向的python版本,需要先删除以前的旧软链接,再重新建立一个新的
进行以下操作:
如果总是失败,那么去usr/bin/
目录下,看一下,看有没有之前创建过,但是由于操作失误,所以已经损坏的软链接(黑底红字的文件),把那种文件删除,再执行
Linux版本问题查询
==lsb_release -a==
这个命令适用于所有遵守LSB规范的的linux,包括Redhat、SuSE、Debian、Ubuntu、Centos等发行版。 接下来的命令虽不能查看当前系统名和版本,但可以显示系统核心信息。
以下二种方法适用于RedHat、CentOS
==cat /etc/redhat-release==
root@MyMail ~ # cat /etc/redhat-release CentOS release 5.7 (Final)
登录到linux执行:#==rpm -q redhat-release==
或CentOS执行:root@MyMail ~ # ==rpm -q centos-release== centos-release-5-7.el5.centos.1
==#cat /etc/issue==
在CentOS下执行显示为: CentOS release 5.7 (Final) Kernel \r on an \m 或在Ubuntu下显示为: Ubuntu 11.04 \n \l 可以用来查看当前正在运行的 Ubuntu 的版本号。
查看磁盘空间
查看当前文件夹大小
du -sh
列出当前文件夹下的所有文件夹及其大小,并按照文件夹大小排序
du -sh * | sort -n
查看当前文件夹下所有文件的大小 du - sh *
查看指定文件 或者文件夹 的大小:(三种方式)
du -sh 文件夹/文件
#sh 根据文件大小显示为nK/nM/nG eg. [4.0K xxx.log]
du -sk 文件夹/文件
# sk 根据文件大小显示为nK eg. [4.3K xxx.log]
du -sm 文件夹/文件
# sm 根据文件大小显示为nM eg. [7M xxx.log]
sh/sk/sm 的区别:
df命令是linux系统以磁盘分区为单位查看文件系统,可以加上参数==查看磁盘剩余空间信息==,命令格式:==df -hl==
显示格式为: 文件系统 容量 已用 可用 已用% 挂载点 Filesystem Size Used Avail Use% Mounted on /dev/hda2 45G 19G 24G 44% / /dev/hda1 494M 19M 450M 4% /boot
none 1009M 0 1009M 0% /dev/shm /dev/hda3 9.7G 7.2G 2.1G 78% /usr/local /dev/hdb2 75G 75G 0 100% / /dev/hdb2 75G 75G 0 100% /
以上面的输出为例,表示的意思为: HD硬盘接口的第二个硬盘(b),第二个分区(2),容量是75G,用了75G,可用是0,因此利用率是100%, 被挂载到根分区目录上(/)。
查看每个根路径的分区大小
df -h
定时任务
linux系统定时检查⽹络状态python脚本
在linux中定时执⾏⼀个程序可以使⽤crond服务,创建编辑计划任务:
crontab -e
写⼊:
*/1 * * * * /usr/local/bin/python3.6 /var/test.py > /dev/pts/0
前五位对应分、时、⽇、⽉、年, */1 * * * *代表代表每隔⼀分钟执⾏⼀次,
之后是任务内容设置,这⾥是⽤python3.6执⾏test.py,并将执⾏结果重定向到终端显⽰。
保存退出后任务就会按计划执⾏.
查询:输入命令:crontab -l查看已经创建的计划任务
删除:我们使用命令:crontab -e,回车后进入crontab命令的计划服务配置界面,直接使用**“dd”,删除计划任务,输入命令“:wq!”保存并退出,使用crontab -l**再次查看,就没有计划任务了
关于centos
centos版本
背景介绍 CentOS 1810版本对应REHL(Red Hat Enterprise Linux)的7.6版本。
内核使用的是3.10.0-957,于红帽公司在2018.10.30发布。
如果您想查看版本历史,点击这里查看CentOS 7.x版本历史。
安装包选择 如下表:
安装DVD时 ,如需要安装图形界面,请在左侧选择GNOME Desktop
CentOS 7 设置默认进入字符界面
1)查看默认启动的命令
[root@xiao ~]# systemctl get-default graphical.target
2)修改字符界面启动的方法
[root@xiao ~]# systemctl set-default multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
重启
使用systemctl get-default可以获得当前的默认target;
使用systemctl set-default可以设置默认target,target可以是graphical.target、multi-user.target。
关于ubuntu
ubuntu版本说明
最近倒腾虚拟机,安装一个Ubuntu作为服务器,然后跑到Ubuntu官网上,发现版本多到眼花缭乱
总结: 1. 桌面版为个人电脑所配置,而服务器版适用于 web 服务器。
2. 桌面版预装了 GUI,而服务器版没有。
3. 桌面版已经安装了许多服务器版没有的软件。
4. 桌面版缺少 Apache、MySQL 和 PHP,而这些在服务器版中是标准配置
主要有这几个问题: 1.有的版本只是一个版本号,有的带LTS 2.相同版本的还有Desktop和Server的区分
先说第一个问题,带有LTS的版本,是Ubuntu官网长期维护更新的稳定版本,而不带有的基本都是最新发布的测试版本或者是过于老的版本不在维护了。
对于第二个问题,只要发布版本号一致,这两者从核心来说也就是相同的,唯一的差别在于它们的预期用途。Desktop版面向个人电脑使用者,可以进行文字处理、网页浏览、多媒体播放和玩游 戏。本质上说,这是一个为普通用户所定制的多用途操作系统。另一方面,Server版旨在充当 web 服务器,可用来托管文件、网页及相似内容。
Ubuntu桌面版本和服务器版本之间的区别
个人电脑上必备的组成部分是 GUI(图形用户界面)。Ubuntu 的桌面版默认带有 Gnome GUI,不过,如果你有需要,也可转换为 KDE 或 X。而服务器版是不安装 GUI 的。除了日常维护,服务器不打算用于本地交互,因而 GUI 不仅没有存在的必 要,而且还会消耗服务器多余的资源。对于其他软件,如办公软件、媒体播放软件、浏览器等等,道理也是一样。在服务器版上这些统统找不到。
由于是面向服务器的,服务器版 Ubuntu 包含了所有你需要启动托管站点的软件。LAMP,即 Linux、Apache、MySQL 和 PHP 的缩写,列出了与 web 服务器相关的软件。除非你自行安装,否则这些在桌面版上是找不到的。
记住,以上区别并非一成不变,通过安装和卸载软件包,你也可以将桌面版定制为服务器版,反之亦然。多数想装服务器的人仍然需要 GUI 的便利,那么可以从任何一个版本起步,然后只需安装 GUI 或 LAMP 即可。
原文链接:https://blog.csdn.net/qq_33945246/article/details/103065962
Ubuntu下载
官方下载地址(不推荐) https://www.ubuntu.com/download
中科大源 http://mirrors.ustc.edu.cn/ubuntu-releases/20.04/
南京大学 http://mirrors.nju.edu.cn/ubuntu-releases/20.04/
上海交通大学 http://ftp.sjtu.edu.cn/ubuntu-cd/20.04/
清华大学 https://mirror.tuna.tsinghua.edu.cn/ubuntu-releases/20.04/
阿里云开源镜像站 http://mirrors.aliyun.com/ubuntu-releases/20.04/
浙江大学 http://mirrors.zju.edu.cn/ubuntu-releases/20.04/
不知名镜像网站 http://mirror.pnl.gov/releases/20.04/
各个版本下载网址:http://mirrors.melbourne.co.uk/ubuntu-releases/
更换apt镜像
更换apt-get为国内镜像源 查看所用的源: sudo gedit /etc/apt/sources.list 重命名原来的源作为备份:sudo mv /etc/apt/sources.list /etc/apt/sources.list.backup 新建一个sources.list文件 sudo gedit /etc/apt/sources.list 复制以下内容并保存(阿里云源):
更新apt软件源:sudo apt-get update
使用apt-fast 具体方法可参考:https://blog.csdn.net/enjoypiker/article/details/86574600
允许ssh登录root用户(命令行)
前期已配置好SSH,参考后面
1、修改root 密码,sudo passwd root
2、修改ssh配置, sudo vim /etc/ssh/shd_config,
修改文件中的PermitRootLogin为yes
3、重启ssh服务, sudo service ssh restart
设置登录root用户桌面(图形界面)
1、vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
在最后一行添加greeter-show-manual-login=true
2、修改root用户配置文件 vim /root/.profile
修改mesg n 所在行为 tty -s && mesg n || true
3、重启直接用root用户登录即可
上述不行采用下面的办法
使用root用户登录桌面系统
Ubuntu20.04安装完成之后,默认是没有root账户登录权限的,不过我们可以通过创建的普通用户获取管理员权限,然后修改配置和root账户的密码,最后实现登录root账户,具体操作步骤如下:
以普通用户登录系统,创建root用户的密码 sudo passwd root
修改50-ubuntu.conf
文件
sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
末尾增加
修改gdm-autologin
文件
sudo gedit /etc/pam.d/gdm-autologin
在第三行前面加
#
以注释掉auth required pam_succeed_if.so user != root quiet_success
,随后保存并退出
修改gdm-password
文件
sudo gedit /etc/pam.d/gdm-password
在第三行前面加
#
以注释掉auth required pam_succeed_if.so user != root quiet_success
,随后保存并退出
修改/root/.profile
文件
sudo gedit /root/.profile
将文件末尾的
mesg n 2> /dev/null || true
这一行注释掉,并随后添加:
注销当前用户,登录root用户 reboot
ifconfig查看只有lo,没有ens33问题
终端输入ifconfig查看,只能看到lo本地回环网卡,没有找到ens33网卡,如下:
输入ifconfig -a查看是,可以找到lo网卡,也可以找到ens33网卡,说明ens33网卡状态异常,如下图所示
解决方法参考: ①首先停止网络服务· service network-manager stop ②删除设备网卡状态管理文件; sudo rm -rf /var/lib/NetworkManager/NetworkManager.state ③重新启动网络服务,这时网络状态将会重新加载刷新写入到文件。service network-manager start 一般来说,到此就可以连接网络上网了,但是有的时候比较坑,还是不行,比如我的就是:
上述设置无效的话,只能尝试其他命令了。
终极解决方法:
原理不是很清楚,应该是重新配置并启动ens33网卡,这样就可以找到了。
ubuntu系统安装VMware Tools
1、打开虚拟机VMware Workstation,启动Ubuntu系统,菜单栏 - 虚拟机 - 安装VMware Tools
2、会发现虚拟机设备下多了VMware Tools这一项,点击它,其里面有一个VMwareTools…tar.gz文件
3、接下来我们把VMwareTools…tar.gz文件提取到某个目录下(随便)
4、提取完成后会发现桌面的myfile里面多了一个vmware-tools-distrib文件夹,这个正是我们待会安装需要用到的
5、捷键Ctrl+Alt+T,启动命令框,然后切换到root用户(切换命令为:sudo su,回车然后会提示你输入当前登录用户的密码,输入成功后即可进入root用户):
6、然后我们以root用户进入到刚刚提取到的vmware-tools-distrib文件夹下,然后输入命令:./vmware-install.pl,然后回车
7、面的操作后就开始安装VMware Tools了,根据其提示输入yes/no,直到出现Enjoy, –the VMware team如下图,就表示安装成功了,然后手动重启虚拟机
8、重启虚拟机后我们发现菜单栏 - 虚拟机 - 安装VMware Tools变成了“重新安装”字眼,这也表明VMware Tools已经安装成功了
ubuntu安装MySQL
一、下载安装包(这里以5.7.32为例) 官方下载地址: https://downloads.mysql.com/archives/community/
选择Ubuntu Linux 18.04 (x86, 64-bit), DEB Bundle
二、解压安装包 到下载安装包的路径解压安装包
tar -xzf mysql-server_5.7.32-1ubuntu18.04_amd64.deb-bundle.tar
三、安装MySQL5.7.32 1.更新依赖源及安装libaio1、libtinfo5依赖
2.按下列顺序安装(提示缺少依赖可更换顺序)
3.继续安装依赖
sudo apt-get -f install sudo apt-get -f install libmecab2
4.安装mysql-server
sudo dpkg -i mysql-community-server_5.7.32-1ubuntu18.04_amd64.deb sudo dpkg -i mysql-server_5.7.32-1ubuntu18.04_amd64.deb 5.检测安装
mysql -u root -p Enter password:输入前面设置的密码,就能够进入mysql数据库。
检查mysql服务状态 systemctl status mysql.service
版权声明:本文为CSDN博主「grilla1024」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/xingxing_LM/article/details/119549348
ubuntu使用MySQL后续配置
操作系统:Ubuntu 17.04 64位
MySQL版本:MySQL 5.7
一、查看3306端口是否开放
netstat -an|grep 3306
如果看到下图这样的,说明端口并未打开:
二、修改访问权限
打开这个配置文件:
注意上图中的第一行红色的注释:
“By default we only accept connections from localhost”,这几句话的意思是说“在默认情况下我们只允许本地服务访问MySQL”,所以我们需要注释掉下方那条配置,直接在它前面加上一个井号即可:
如下图所是,这条配置也变成了注释:
拓展一下思路,如果我们出于安全考虑,希望限制只有某台应用服务器可以访问MySQL的话,那么其实就需要调整这条配置项就可以了。
三、修改端口号 还是这个配置文件,看到这个配置文件的中间部分的配置项:
我们需要在其中增加一条端口配置:port = 3306
修改完文件之后记得保存。
四、开放root账户的访问权限 在第三步中,我们仅仅只是取消了本地访问限制,但是我们还是没有对账户权限进行设置。
重启MySQL服务,并进入MySQL控制台:
user表
最后一项设置,开放root账户所有权限:
使各种权限设置立即生效:
五、再次确认3306端口状态
netstat -an|grep 3306
ubuntu的SSH
ubuntu 16.04 安装ssh失败
ubuntu 16.04默认安装上了最新的openssh-client(可以连接其他计算机上的ssh服务)
而没有安装openssh-server服务端(允许其他计算机通过ssh访问和操作计算机,如:xshell等工具).
openssh-server是依赖于openssh-client的,那ubuntu不是自带了openssh-client吗?原由是自带的openssh-clien与所要安装的openssh-server所依赖的版本不同.
解决方案有两种: 1.直接卸载openssh-client,在安装openssh-server(下面采用的解决方式) 2.根据提示,安装指定版本的openssh-client(命令:sudo apt-get install openssh-client=版本名字) 安装ssh sudo apt-get install openssh-serve
解决方案如下: 1.卸载openssh-client sudo apt-get purge openssh-client
2.卸载完毕了再执行ssh安装命令 sudo apt-get install openssh-server
3.启动ssh服务 sudo service ssh start
4.查看ssh启动情况 sudo ps -e |grep ssh
远程连接需要更改 vi /etc/sshd/sshd_config
文件 ,再重启!
Ubuntu安装cmake
Step 1:Cmake下载地址
:https://cmake.org/download/ 选择Linux-x86_64平台
Step 2:解压安装包:tar -xzf cmake-3.18.0-rc1-Linux-x86_64.tar.gz
Step 3:拷贝cmake目录到/usr/local/cmake
入目录后会看到只有 bin doc man share四个文件夹,没有 bootstrap文件,因为新版本的好像是已经编译好的,所以只要加入path里面就可以在命令行直接使用命令了,在这里笔者将上述cmake安装包文件移动到了/usr/local/cmake位置:
Step 4:path配置 sudo gedit ~/.bashrc
在末尾添加如下的内容:export PATH=/usr/local/cmake/bin:$PATH
Step 5:配置文件生效 source ~/.bashrc
Step 6:本地测试 cmake --version
[option]Step 7:cmake-gui
关于docker
安装和卸载docker
卸载旧版本
开始安装前先把自己不小心安装的旧版本卸载了
官网命令有点不同?多了两个
2.1 通过apt安装
正常情况下库里面是有docker.io的,实际上apt install docker.io以后是可以拉取镜像了,但是这个版本可能是旧版本,并且感觉安装不全。
2.2 通过官方仓库安装
然后添加GPG秘钥
然后加入官方仓库
可以用apt安装了
老办法,用hello world镜像验证安装是否成功
2.3 用懒人脚本安装
或者用国内的镜像源
2.4 用deb安装
哈哈,没想到吧,实际上也可以直接通过deb这么简单粗暴的方式安装docker。去https://download.docker.com/linux/ubuntu/dists/
这个网址下面下载deb包,然后安装
卸载
只谈安装不谈卸载都是耍流氓
如果要抹去镜像和容器
Could not get lock /var/lib/dpkg/lock-frontend
使用apt安装时报错:
解决方案: 方案一:
如果提示没有apt进程:
往下看方案二
方案二: 依次执行:
完成!
虚拟机的问题
System has not been booted with systemd as init system (PID 1). Can‘t operate
当我使用命令sudo systemctl start docker
的时候报错:
System has not been booted with systemd as init system (PID 1). Can't operate.
查了原因:
如果是一般的Linux
操作系统,可能是因为Linux
中没有使用systemd
,想用systemd
命令来管理Linux
上的服务,因此会报错,
很可能是使用的是经典的SysV init(sysvinit)
系统。
但我这个是window10下WSL的Ubuntu,就会使SysV init
而不是systemd
。
解决方法: 更换命令,用SysV init
的命令代替systemd
的
Last updated