2024-08-16

在Linux系统中,每个进程都有自己的环境变量的副本。当我们创建一个新的进程时,可以选择继承父进程的环境变量,或者在创建子进程时重新设置环境变量。

在Python中,我们可以使用os模块来设置和获取环境变量。以下是一些示例代码:

  1. 获取环境变量:



import os
 
# 获取环境变量
env_var = os.environ.get('ENV_VAR_NAME')
print(env_var)
  1. 设置环境变量:



import os
 
# 设置环境变量
os.environ['ENV_VAR_NAME'] = 'VALUE'
  1. 删除环境变量:



import os
 
# 删除环境变量
del os.environ['ENV_VAR_NAME']
  1. 创建子进程并继承父进程的环境变量:



import os
from subprocess import Popen
 
# 创建子进程并继承父进程的环境变量
child = Popen(['python', 'child_script.py'], env=os.environ)
child.wait()
  1. 创建子进程并设置新的环境变量:



import os
from subprocess import Popen
 
# 创建子进程并设置新的环境变量
env = os.environ.copy()
env['NEW_ENV_VAR'] = 'NEW_VALUE'
child = Popen(['python', 'child_script.py'], env=env)
child.wait()

在这些示例中,我们使用了os模块中的environ字典来管理环境变量。这个字典包含了所有的环境变量,其中键是变量名,值是变量的值。我们可以使用get()方法来获取一个环境变量,使用[]操作符来设置或修改一个环境变量,使用del操作符来删除一个环境变量。

在创建子进程时,我们可以选择传入一个自定义的环境变量字典(通过copy()方法复制父进程的环境变量,然后进行修改),这样子进程就会使用这个自定义的环境变量。如果不传入env参数,子进程将会继承父进程的环境变量。

2024-08-16

报错解释:

这个错误表明Docker服务启动失败,因为系统无法找到名为docker.service的单元文件。这通常意味着Docker服务没有正确安装,或者服务文件丢失。

解决方法:

  1. 确认Docker是否已正确安装:运行docker --version来检查Docker是否已安装。
  2. 如果Docker未安装,请按照官方文档安装:https://docs.docker.com/get-docker/
  3. 如果Docker已安装但服务文件丢失,尝试重新安装Docker:

    • 使用包管理器(如apt-getyum)移除Docker然后重新安装。
    • 对于Debian系的Linux发行版,可以尝试重新加载Docker系统的单元文件:sudo systemctl daemon-reload
  4. 检查服务状态获取更多信息:sudo systemctl status docker.service
  5. 如果问题依旧,查看日志以获取更多错误信息:journalctl -u docker.service
  6. 确保所有Docker依赖都已安装,并且没有冲突。
  7. 如果你是通过第三方源安装Docker,确保该源是可用的。

如果以上步骤无法解决问题,可能需要查看特定Linux发行版的Docker安装和故障排除指南。

2024-08-16

在CentOS 7上安装Docker的步骤如下:

  1. 卸载旧版本的Docker(如果有):



sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  1. 安装Docker的依赖包:



sudo yum install -y yum-utils
  1. 设置Docker的稳定仓库:



sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装Docker Engine:



sudo yum install docker-ce docker-ce-cli containerd.io
  1. 启动Docker服务:



sudo systemctl start docker
  1. 验证Docker是否正确安装:



sudo docker run hello-world
  1. 设置Docker开机自启:



sudo systemctl enable docker

以上命令执行后,Docker将在CentOS 7上安装并启动。

2024-08-16

在Linux中,文件和目录的权限可以通过ls -l命令查看。每个文件或目录的权限都包括所有者权限、组权限和其他用户权限,并且都用三位二进制数字表示。每一位数字代表不同的权限:

  1. 读(r):值为4
  2. 写(w):值为2
  3. 执行(x):值为1

例如,权限字符串rw-r--r--转换为数字表示为644

改变文件或目录权限可以使用chmod命令。

例如,给所有者添加执行权限:




chmod u+x 文件名

移除组的写权限:




chmod g-w 文件名

设置所有者为读写执行,组为读执行,其他为读,可以用:




chmod 754 文件名

改变文件或目录所有者可以使用chown命令:

例如,将文件所有者改为用户名为john的用户:




chown john 文件名

将文件所有者和组改为johnusers




chown john:users 文件名

特别注意的是,更改文件所有者或权限可能需要超级用户(root)权限。

2024-08-16

在Linux中安装和配置Samba服务器的步骤如下:

  1. 更新系统包列表:



sudo apt update
  1. 安装Samba服务器:



sudo apt install samba
  1. 备份原始Samba配置文件(可选,但推荐):



sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
  1. 编辑Samba配置文件:



sudo nano /etc/samba/smb.conf

在配置文件中,可以添加一个简单的共享区段如下:




[sambashare]
    path = /path/to/share
    read only = no
    browsable = yes

/path/to/share替换为你想要共享的实际目录路径。

  1. 重启Samba服务以应用配置更改:



sudo systemctl restart smbd
  1. (可选)如果你有UFW防火墙运行,允许Samba通过:



sudo ufw allow samba
  1. (可选)为用户创建Samba账户:



sudo adduser username
sudo smbpasswd -a username

替换username为实际的用户名。

完成这些步骤后,你应该能够从网络上的其他机器访问Samba共享。

2024-08-16

在Linux中配置网络接口的VLAN、Bonding、Bridge、MACVLAN、IPVLAN和MACVtap模式,可以通过编辑网络配置文件或使用命令行工具如ipifconfig(已废弃)。以下是各种模式的配置示例:

  1. VLAN模式:



# 创建VLAN接口
ip link add link eth0.10 type vlan id 10
 
# 配置IP地址
ip addr add 192.168.10.1/24 dev eth0.10
 
# 启用接口
ip link set dev eth0.10 up
  1. Bonding模式:



# 创建Bond接口
sudo nmcli con add type bond con-name bond0 ifname bond0 mode balance-rr
 
# 将物理接口添加到Bond
sudo nmcli con add type ethernet con-name bond-slave-eth1 ifname eth1 master bond0
sudo nmcli con add type ethernet con-name bond-slave-eth2 ifname eth2 master bond0
 
# 启动Bond接口
sudo ifconfig bond0 up
sudo nmcli con up bond0
  1. Bridge模式:



# 创建Bridge接口
sudo brctl addbr br0
 
# 将物理接口添加到Bridge
sudo ip link set eth1 master br0
sudo ip link set eth2 master br0
 
# 配置Bridge接口IP
sudo ip addr add 192.168.1.1/24 brd + dev br0
 
# 启动Bridge接口
sudo ip link set dev br0 up
  1. MACVLAN模式:



# 创建MACVLAN接口
sudo ip link add link eth0 link1 type macvlan mode bridge
 
# 配置IP地址
sudo ip addr add 192.168.1.10/24 dev link1
 
# 启动接口
sudo ip link set dev link1 up
  1. IPVLAN模式:



# 创建IPVLAN接口
sudo ip link add link eth0 ip1 type ipvlan mode private
 
# 配置IP地址
sudo ip addr add 192.168.1.10/24 dev ip1
 
# 启动接口
sudo ip link set dev ip1 up
  1. MACVtap模式:



# 创建MACVtap接口
sudo ip link add macvtap0 type macvtap mode bridge
 
# 将MACVtap与物理接口关联
sudo ip link set macvtap0 master eth0
 
# 配置IP地址
sudo ip addr add 192.168.1.10/24 dev macvtap0
 
# 启动接口
sudo ip link set dev macvtap0 up

请注意,这些命令可能需要root权限,因此在某些情况下你可能需要使用sudo。另外,这些配置可能会随着Linux发行版和网络管理工具的不同而有所变化,例如NetworkManager或systemd-networkd等。

2024-08-16

journalctl 是一个命令行工具,用于查看 systemd 的日志系统中的日志。systemd 是 Linux 系统的一个初始化系统,负责系统的启动和管理系统进程。journalctl 可以用来查看由 systemd 管理的所有单元的日志,包括系统守护进程(如 sshdhttpd)、服务和自定义进程。

基本用法如下:

  • 查看所有日志:journalctl
  • 查看特定服务的日志,如 sshdjournalctl -u sshd
  • 实时滚动查看最新日志:journalctl -f
  • 查看特定时间段的日志:journalctl --since "2021-01-01 00:00:00" --until "2021-01-02 00:00:00"
  • 显示最后N行日志:journalctl -n 50
  • 以分页方式显示日志:journalctl -f -o verbose
  • 以json格式查看日志:journalctl -o json
  • 查看指定PID的进程日志:journalctl _PID=1234
  • 查看指定用户的进程日志:journalctl _UID=1234

这些是 journalctl 的基本用法,实际使用时可以根据需要选择合适的参数。

2024-08-16

在Linux中,tar命令用于创建、维护、修改和提取tar文件。以下是使用tar命令进行文件打包和解压的基本示例:

打包文件或目录




tar -cvf archive_name.tar directory_or_file
  • -c 表示创建新的归档文件。
  • -v 表示在归档时显示详细信息。
  • -f 表示指定归档文件的名称。

解压tar文件




tar -xvf archive_name.tar
  • -x 表示从归档文件中提取文件。

打包并压缩文件或目录




tar -czvf archive_name.tar.gz directory_or_file
  • -z 表示使用gzip压缩。

解压缩tar.gz文件




tar -xzvf archive_name.tar.gz

打包并使用bzip2压缩




tar -cjvf archive_name.tar.bz2 directory_or_file

解压tar.bz2文件




tar -xjvf archive_name.tar.bz2

以上命令可以根据需要打包和解压tar文件,以及使用gzip或bzip2进行压缩和解压。

2024-08-16

在CentOS 7上升级glibc到2.36,你可以遵循以下步骤:

  1. 查看当前glibc版本:



yum list glibc
  1. 添加新的软件仓库,比如使用SCL仓库:



yum install centos-release-scl
  1. 安装新版本的glibc和工具链:



yum install glibc-2.36-30.el9.x86_64
  1. 启用新版本的glibc:



scl enable glibc-2.36 bash
  1. 验证新版本的glibc是否在运行:



rpm -q glibc

请注意,直接升级到CentOS 9的glibc版本可能会导致系统不稳定,因此推荐在测试环境中进行测试。如果你需要在生产环境中升级,请先在一个隔离的环境中进行测试,并确保有充足的备份和恢复计划。

2024-08-16

要在CentOS 7上将yum源配置成阿里云镜像源,你需要按照以下步骤操作:

  1. 备份原有的yum源配置文件。
  2. 下载阿里云的CentOS 7镜像源配置文件。
  3. 替换系统默认的yum源配置文件。

以下是具体的命令:




# 1. 备份原有的yum源配置文件
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
 
# 2. 下载阿里云的CentOS 7镜像源配置文件
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
 
# 3. 清除缓存并生成新的缓存
sudo yum clean all
sudo yum makecache

执行上述命令后,你的CentOS 7系统的yum源就会被配置成阿里云镜像源。使用yum makecache是为了生成新的缓存,以便yum能够正确地使用新的镜像源进行软件包的安装和更新。