Linux编程环境常见坑及解决方案

2023-12-25 04:48

本文主要是介绍Linux编程环境常见坑及解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、PIP 踩坑 

Ubuntu 中pip 10 更新后常常出现执行错误,通过下面方式可修复并升级到最新版本:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python get-pip.py

二、Docker 踩坑 -- Docker常见问题及解决方法

1.kernel:unregister_netdevice:...

kernel:unregister_netdevice: waiting for lo to become free. Usage count = 1
这是个从 2014 年就出现了的老 BUG,不管是 RHEL、CentOS、Ubuntu 还是 Debian 都会碰到。这实际上是 Linux 内核的一个 BUG,目前仍未彻底解决,尽量升级最新的 Linux 内核吧。

2. Failed to get D-Bus connection:...

Failed to get D-Bus connection: Operation not permitted
在 Docker 中执行 systemctl 命令时触发这个错误,常见于使用 Systemd 的 Linux 发行版,比如 CentOS 7 全系列。

# systemctl start vsftpdFailed to get D-Bus connection: Operation not permitted

2.1 解决方案

方案1. 官方解决方案

官方解决方案 是创建一个中间镜像,然后在这个镜像基础上构建你的镜像。

方案2. 避免使用 systemctl 命令

比如直接通过 /usr/sbin/sshd & (& 表示后台运行程序)来执行命令。

方案3. 开启特权模式

可以在创建容器时通过 --privileged=true 开启特权模式。

创建容器:

# docker run -d --name centos7 --privileged=true centos7:last /usr/sbin/init

进入容器:

# docker exec -it centos7 /bin/bash

这样可以使用 systemctl 启动服务了。

2.2 根本原因

Docker 的设计理念是将每个容器作为宿主机上一个独立的主进程运行,在容器内部不运行后台服务。容器的生命周期是围绕一个主进程存在,所以正确的使用容器方法是将里面的服务运行在前台。

systemd 是主流 Linux 发行版默认的服务管理程序,取代了传统的 SystemV 风格服务管理。systemd 维护系统服务程序,需要特权才能会访问 Linux 内核。而容器并不是一个完整的操作系统,只有一个文件系统,而且启动时默认使用普通用户权限访问 Linux 内核,自然用不了 systemd!

因此,请遵守容器设计原则,一个容器里运行一个前台服务!

3. 当遇到不能解决的问题时,记得用命令
docker stop $(docker ps -aq)
docker rm -f $(docker ps -aq)
docker network prune
清理你的Docker网络。这将会清除你之前的网络并且给你一个全新的环境:

三、防火墙

    查看:service iptables status 或/etc/init.d/iptables status
    开启:service iptables start
    关闭:service iptables stop
四、翻墙

1、安装python

linux下的shadowsocks是采用python开发,因此需要先安装python,如已经安装可以跳过此步骤。

使用以下命令安装python :

sudo apt-get install python 
安装python的包管理器pip:

sudo apt-get install python-pip 
2、安装shadowsocks客户端

安装python-pip后,能通过pip直接安装客户端

sudo pip install shadowsocks 
3、配置shadowsocks客户端配置

新建一个配置文件shawdowsocks.json,根据你的shadowsocks服务提供的参数,配置以下相应的参数: 

“server”: “111.111.111.111”, 
“server_port”: 443, 
“local_port”: 1080, 
“password”: “111111”, 
“timeout”: 600, 
“method”: “rc4-md5” 

4、启动shadowsocks客户端服务

通过以下命令:

sudo sslocal -c shawdowsocks.json -d start

5.但在linux下并不能直接通过上述设置翻墙,因为shawdowsocks是socks 5代理,需要客户端配合才能翻墙。

apt-get install privoxy

6.配置privoxy 
vi /etc/privoxy/config

1336 forward-socks5t / 127.0.0.1:1080 .

监听接口默认开启的 localhost:8118

7.启动privoxy 
//开启privoxy 服务就行 
sudo service privoxy start 
// 设置http 和 https 全局代理 
export http_proxy=’http://localhost:8118’ 
export https_proxy=’https://localhost:8118’ 
test : 
wget www.google.com 
如果把返回200 ,并且把google的首页下载下来了,那就是成功了


这篇关于Linux编程环境常见坑及解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/534303

相关文章

Linux线程同步/互斥过程详解

《Linux线程同步/互斥过程详解》文章讲解多线程并发访问导致竞态条件,需通过互斥锁、原子操作和条件变量实现线程安全与同步,分析死锁条件及避免方法,并介绍RAII封装技术提升资源管理效率... 目录01. 资源共享问题1.1 多线程并发访问1.2 临界区与临界资源1.3 锁的引入02. 多线程案例2.1 为

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

Java.lang.InterruptedException被中止异常的原因及解决方案

《Java.lang.InterruptedException被中止异常的原因及解决方案》Java.lang.InterruptedException是线程被中断时抛出的异常,用于协作停止执行,常见于... 目录报错问题报错原因解决方法Java.lang.InterruptedException 是 Jav

kkFileView在线预览office的常见问题以及解决方案

《kkFileView在线预览office的常见问题以及解决方案》kkFileView在线预览Office常见问题包括base64编码配置、Office组件安装、乱码处理及水印添加,解决方案涉及版本适... 目录kkFileView在线预览office的常见问题1.base642.提示找不到OFFICE组件

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方