🤾
MLStudy
  • README
  • Linux
    • command
    • Basic_commands
    • Advanced_commands
    • Linuxvirtual_machine_operate
    • virtual machine
  • Python
    • Deploy_Issue
    • Model_Analysis
    • Model_concept
    • Model_Grammar
    • Python_print_format
    • Model_ComFuc
    • Deep_learning_know
  • Theoretical knowledge
    • MLE_MAP_Bayesian
    • TV_denoise
  • Research
    • Writing
    • How to read
  • To_be_classified
    • tqdm
    • fast_visit_github
    • windows_issue
    • Zotero
    • data_struct
    • dataset
      • chapter_1
      • chapter_2
      • chapter_3
      • chapter_4
      • chapter_5
      • chapter_6
      • chapter_7
Powered by GitBook
On this page
  • Linux分区
  • Python:os.path.join()产生的斜杠在Windows和Linux下的不同表现和解决方法
  • linux 查看python安装路径,版本号
  • 修改默认python
  • Linux版本问题查询
  • 查看磁盘空间
  • 定时任务
  • 关于centos
  • centos版本
  • CentOS 7 设置默认进入字符界面
  • 关于ubuntu
  • ubuntu版本说明
  • Ubuntu下载
  • 更换apt镜像
  • 允许ssh登录root用户(命令行)
  • 设置登录root用户桌面(图形界面)
  • 使用root用户登录桌面系统
  • ifconfig查看只有lo,没有ens33问题
  • 上述设置无效的话,只能尝试其他命令了。
  • ubuntu系统安装VMware Tools
  • ubuntu安装MySQL
  • 检查mysql服务状态 systemctl status mysql.service
  • ubuntu使用MySQL后续配置
  • ubuntu的SSH
  • Ubuntu安装cmake
  • 关于docker
  • 安装和卸载docker
  • Could not get lock /var/lib/dpkg/lock-frontend
  • 虚拟机的问题
  • System has not been booted with systemd as init system (PID 1). Can‘t operate
  1. Linux

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()这样的方法在不同操作系统下的表现是不一致的。

例如

import os.path
print(os.path.join('a', 'b', 'c'))

在Linux/macOS下会显示

a/b/c

而在Windows下会显示

a\b\c

即 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()生成的反斜杠(\)全部替换为斜杠(/),如:

import os.path
result = os.path.join('a', 'b', 'c')
print(result)

result = result.replace('\\', '/')
print(result)

会得到

a\b\c
a/b/c

通过pathlib.PurePath.as_posix()

从Python 3.4开始可以通过pathlib.PurePath.as_posix()来生成斜杠(/)格式的路径,其实其实现原理和str.replace()并没有太大区别。例如:

import os.path
from pathlib import Path

result = os.path.join('a', 'b', 'c')
print(result)

result = Path(result).as_posix()
print(result)

会得到

a\b\c
a/b/c

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

  1. 查看默认安装位置

# 或者使用 下面的来查看当前本机含有的所有python也可以
ll /usr/bin/python*  # 查看现有的python
  1. 修改软链接指向

先看一下ln命令的基本语法

ln [OPTION]... [-T] TARGET LINK_NAME
TARGET 目标(软链接指向的目标文件)
LINK_NAME  软链接的名称
也可以使用  -t, --target-directory=DIRECTORY 指定这个创建的软链接文件放在哪里
linux中,万物皆文件

注意:

  • 创建软链接/快捷方式的时候,默认情况下,请确保这个软链接没有被创建过(名称要以前不存在的,只能新建,不能覆盖)

  • ln命令无法将以前建立的软链接的指向做修改

  • 也就是说,如果想修改默认python这个软链接指向的python版本,需要先删除以前的旧软链接,再重新建立一个新的

进行以下操作:

# 查看当前已有的软链接(我的已经改过了,所以指向的就是python3.7)
ll /usr/bin/python*
(箭头左侧是 软链接/快捷方式的位置 右侧是其指向的位置)
lrwxrwxrwx 1 root root      34 Jan 25 09:36 /usr/bin/python -> /usr/local/python3.7/bin/python3.7  #已经设置好的软链接指向XXX
lrwxrwxrwx 1 root root      34 Jan 25 10:03 /usr/bin/python3 -> /usr/local/python3.7/bin/python3.7
lrwxrwxrwx 1 root root      16 Mar 13  2020 /usr/bin/python3-config -> python3.8-config*
-rwxr-xr-x 2 root root 5492720 Jan 15 18:42 /usr/bin/python3.7*  # 目标文件
-rwxr-xr-x 2 root root 5492720 Jan 15 18:42 /usr/bin/python3.7m*
-rwxr-xr-x 1 root root 5490488 Nov 26 20:14 /usr/bin/python3.8*
lrwxrwxrwx 1 root root      33 Nov 26 20:14 /usr/bin/python3.8-config -> x86_64-linux-gnu-python3.8-config*

# 删除旧的指向python3.8的软链接(直接删就行)
sudo rm -f /usr/bin/python
# 注意,上面python后面没有斜杠,表示删除的是软链接,而不是目录

# 创建新的指向python3.7的软链接
sudo ln -s /usr/bin/python3.7  /usr/bin/python3

如果总是失败,那么去usr/bin/目录下,看一下,看有没有之前创建过,但是由于操作失误,所以已经损坏的软链接(黑底红字的文件),把那种文件删除,再执行

Linux版本问题查询

  1. ==lsb_release -a==

root@container-272b11bbac-5304541b:~#  lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.6 LTS
Release:        18.04
Codename:       bionic

这个命令适用于所有遵守LSB规范的的linux,包括Redhat、SuSE、Debian、Ubuntu、Centos等发行版。 接下来的命令虽不能查看当前系统名和版本,但可以显示系统核心信息。

root@container-272b11bbac-5304541b:~#  uname
Linux
root@container-272b11bbac-5304541b:~# uname -r
5.8.0-43-generic
root@container-272b11bbac-5304541b:~#  uname -a
Linux container-272b11bbac-5304541b 5.8.0-43-generic #49~20.04.1-Ubuntu SMP Fri Feb 5 09:57:56 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

以下二种方法适用于RedHat、CentOS

  1. ==cat /etc/redhat-release==

root@MyMail ~ # cat /etc/redhat-release CentOS release 5.7 (Final)

  1. 登录到linux执行:#==rpm -q redhat-release==

或CentOS执行:root@MyMail ~ # ==rpm -q centos-release== centos-release-5-7.el5.centos.1

  1. ==#cat /etc/issue==

在CentOS下执行显示为: CentOS release 5.7 (Final) Kernel \r on an \m 或在Ubuntu下显示为: Ubuntu 11.04 \n \l 可以用来查看当前正在运行的 Ubuntu 的版本号。

查看磁盘空间

  1. 查看当前文件夹大小 du -sh

  2. 列出当前文件夹下的所有文件夹及其大小,并按照文件夹大小排序 du -sh * | sort -n

​ 查看当前文件夹下所有文件的大小 du - sh *

  1.  查看指定文件 或者文件夹 的大小:(三种方式)

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 的区别:

  1. 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%, 被挂载到根分区目录上(/)。

  1. 查看每个根路径的分区大小 df -h


定时任务

linux系统定时检查⽹络状态python脚本

vim test.py      //创建⼀个.py⽂件test.py代码: 
#导⼊所需模块 
import subprocess     
from subprocess import run 
from time import time 
from time import ctime 
#定义函数 
def ping (ip): 
	a=run('ping -c 2 %s' %ip,shell=True,stdout=subprocess.PIPE) //执⾏命令⾏指令并返回结果 
	t1=time()10     
	t2=ctime(t1)  //获取当前系统时间     
	if a.returncode==0:      //如果返回值是0表⽰连通,否则为断开        
		print(t2+':'+' '+ip+'⽹络连通')    
	else:14         
		print(t2+':'+' '+ip+'⽹络断开') 

ping('192.168.0.1')
ping('192.168.0.2')
ping('192.168.0.10)

在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镜像

  1. 更换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 复制以下内容并保存(阿里云源):

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

更新apt软件源:sudo apt-get update

  1. 使用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

  • 末尾增加

greeter-show-manual-login=true #手工输入登陆系统的用户名和密码
allow-guest=false #不允许guest登录(可选)

修改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这一行注释掉,并随后添加:

    tty -s&&mesg n || 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 一般来说,到此就可以连接网络上网了,但是有的时候比较坑,还是不行,比如我的就是:

上述设置无效的话,只能尝试其他命令了。

终极解决方法:

sudo dhclient ens33
sudo ifconfig ens33

原理不是很清楚,应该是重新配置并启动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依赖

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libaio1
sudo apt-get install libtinfo5

2.按下列顺序安装(提示缺少依赖可更换顺序)

sudo dpkg -i mysql-common_5.7.32-1ubuntu18.04_amd64.deb
sudo dpkg-preconfigure mysql-community-server_5.7.32-1ubuntu18.04_amd64.deb #此步需要输入数据的root密码
sudo dpkg -i libmysqlclient20_5.7.32-1ubuntu18.04_amd64.deb
sudo dpkg -i libmysqlclient-dev_5.7.32-1ubuntu18.04_amd64.deb
sudo dpkg -i libmysqld-dev_5.7.32-1ubuntu18.04_amd64.deb
sudo dpkg -i mysql-community-client_5.7.32-1ubuntu18.04_amd64.deb
sudo dpkg -i mysql-client_5.7.32-1ubuntu18.04_amd64.deb
sudo dpkg -i mysql-common_5.7.32-1ubuntu18.04_amd64.deb
————————————————
版权声明:本文为CSDN博主「grilla1024」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xingxing_LM/article/details/119549348

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如果看到下图这样的,说明端口并未打开:

二、修改访问权限

cd etc/mysql/mysql.conf.d/
ls -l 
sudo vim mysqld.cnf

打开这个配置文件:

注意上图中的第一行红色的注释:

“By default we only accept connections from localhost”,这几句话的意思是说“在默认情况下我们只允许本地服务访问MySQL”,所以我们需要注释掉下方那条配置,直接在它前面加上一个井号即可:

bind-address = 127.0.0.1

如下图所是,这条配置也变成了注释:

拓展一下思路,如果我们出于安全考虑,希望限制只有某台应用服务器可以访问MySQL的话,那么其实就需要调整这条配置项就可以了。

三、修改端口号 还是这个配置文件,看到这个配置文件的中间部分的配置项:

我们需要在其中增加一条端口配置:port = 3306

修改完文件之后记得保存。

四、开放root账户的访问权限 在第三步中,我们仅仅只是取消了本地访问限制,但是我们还是没有对账户权限进行设置。

重启MySQL服务,并进入MySQL控制台:

service mysql stop
service mysql start
mysql -u root -p 

# 切换到mysql数据库
user mysql;

#  查看所有数据库表
show tables;

# 查看user表
desc user;
select host,user from user;

# 看到root用户仅仅只能在本地访问MySQL服务,所以我们要把它修改为“%”,意思是无论在哪里root账户都能够访问数据库服务

update user set host='%' where user='root';
# 建议根据实际情况将root用户的host项修改为某个指定的ip地址,或仍然保持localhost

user表

最后一项设置,开放root账户所有权限:

grant all privileges on *.* to 'root'@'%' identified by '你的root账户密码';

使各种权限设置立即生效:

flush privileges;

五、再次确认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

卸载旧版本

开始安装前先把自己不小心安装的旧版本卸载了

sudo apt-get remove docker docker-engine docker.io

官网命令有点不同?多了两个

sudo apt-get remove docker docker-engine docker.io containerd runc

2.1 通过apt安装

正常情况下库里面是有docker.io的,实际上apt install docker.io以后是可以拉取镜像了,但是这个版本可能是旧版本,并且感觉安装不全。

sudo apt-get update
sudo apt-get remove docker docker-engine docker.io
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker

2.2 通过官方仓库安装

 sudo apt-get update

 sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

然后添加GPG秘钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

然后加入官方仓库

echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

可以用apt安装了

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

老办法,用hello world镜像验证安装是否成功

sudo docker run hello-world

2.3 用懒人脚本安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

或者用国内的镜像源

curl -sSL https://get.daocloud.io/docker | sh
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

2.4 用deb安装

哈哈,没想到吧,实际上也可以直接通过deb这么简单粗暴的方式安装docker。去https://download.docker.com/linux/ubuntu/dists/ 这个网址下面下载deb包,然后安装

sudo dpkg -i /path/to/package.deb

卸载

只谈安装不谈卸载都是耍流氓

sudo apt-get purge docker-ce docker-ce-cli containerd.io

如果要抹去镜像和容器

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

Could not get lock /var/lib/dpkg/lock-frontend

使用apt安装时报错:

E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

解决方案: 方案一:

sudo killall apt apt-get

如果提示没有apt进程:

apt: no process found
apt-get: no process found

往下看方案二

方案二: 依次执行:

sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock*
sudo dpkg --configure -a
sudo apt update

完成!

虚拟机的问题

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的

PreviousAdvanced_commandsNextPython

Last updated 2 years ago

这种不一致的表现在遇到jinja2下include模板文件路径时就会由于jinja2只支持斜杠(/),而在Windows下使用os.path.join()会出现反斜杠(\),而造成找不到模板文件错误,参考这个。

在os.path的官方文档页面开始位置就提到源代码文件根据不同操作系统在三个不同文件中:

Source code: (for POSIX), (for Windows NT), and (for Macintosh)

如果跟着看Macintosh操作系统对应的源码的话,会很惊讶地发现Macintosh下不是以斜杠(/)也不是以反斜杠(\),而是以冒号(:)作为分隔符的,是不是很震惊:我的mac怎么可能是以冒号(:)为分隔符的?!

这其实是一个历史问题了,这里仅应用到了2001发布的Mac OS X之前的Macintosh操作系统中,那时的Macintosh确实是用冒号(:)为分隔符的。而从2001年的Mac OS X开始,到2012年的OS X,再到2016年的macOS,都采用了遵循Unix的斜杠(/)分隔符,也就直接使用Linux的源码了。

这其实也是个历史问题,归根到底还是因为Windows为了保持对DOS的兼容性,而DOS为什么要使用反斜杠(\)就说来话长了,可以参考MSDN上的一篇博文:。

如下图所示:箭头左侧是 软链接/快捷方式的位置 右侧是其指向的位置/usr/bin/ 因此可以看到,软链接是 水蓝色;可执行文件是 绿色

image-20220125100842976

在这里插入图片描述

以清华源为例,进入网站: 输入“ubuntu”后找到后发现**,ubuntu后面带有一个小问号**,点击进去按照要求和版本设置,即可更换复制镜像源

在这里插入图片描述

关于网络设置:

img

这种情况出现一般是在上次正常使用可以上网,之后或关机后再重启系统出现,初步判定与网卡状态文件记录有关 。(在Linux下,一切皆文件)

img
img
img
img

这个可以具体参考, 这个是官方的指导教程

实际上提供了一个非常适合懒人的方式,就是用脚本

给出的命令有一点不一样

本文转自 ,如有侵权,请联系删除。

本文转自 ,如有侵权,请联系删除。

用window10下WSL使用Ubuntu来用Docker

在这里插入图片描述

本文转自 ,如有侵权,请联系删除。

issue
11.2. os.path — Common pathname manipulations — Python 3.7.0 documentation
Lib/posixpath.py
Lib/ntpath.py
Lib/macpath.py
Lib/macpath.py
Lib/macpath.py
Lib/posixpath.py
Why is the DOS path character ""? – Larry Osterman's WebLog
CentOS 7.x简易教程之二:版本选择(以1810版本为例)
CentOS-7设置开机进入文本界面(不进入图形界面)_test1280-CSDN博客_centos 不进入图形界面
清华大学开源软件镜像站 | Tsinghua Open Source Mirror
虚拟机下Linux桥接模式联网步骤 - 简书 (jianshu.com)
挂起
这里
菜鸟教程
官网
https://blog.csdn.net/weixin_40965132/article/details/118511876
https://blog.csdn.net/lun55423/article/details/108907779
https://blog.csdn.net/qq_43685040/article/details/112056242
在这里插入图片描述
img
在这里插入图片描述