[toc]

Arch竟能安装游戏

steam

打完显卡驱动之后咧,我们就能下steam愉快的玩apex、文明6、空洞骑士等游戏

1
sudo pacman -S steam

为了让 SteamDeck (搭载基于 Arch Linux 的魔改版) 能卖出去, Valve 开发了 Steam Proton (基于 wine), 这个软件可以让 Linux 运行只有 Windows 能玩的游戏, 我们把这个功能打开后就可以玩绝大多数游戏啦!!!

所以这边下完steam完成更新和登录要进设置中文和这个兼容性,语言你可以不设置,但是兼容性一定要开,不然下不了游戏,即使下了也是win端的linux没办法打开。

Screenshot_20231122_012423

筛选掉不支持 Linux 的游戏

Screenshot_20231122_173911

下个apex玩玩!

运行游戏需要预编译 Vulkan 着色器, 是个很吃 CPU 的操作, 耐心等待一断时间就好。

Lutris

Lutris 是一个视频游戏保存平台,旨在让您的视频游戏收藏在未来几年保持正常运行。 多年来,视频游戏经历了许多不同的硬件和软件平台。通过提供可用于运行游戏的最佳软件,Lutris 使您可以轻松运行所有新旧游戏。

Screenshot_20231122_013507

目前,该平台能很好的使用Steam、Epic Games Store、GOG 和 Humble Bundle 游戏库,但是我这里只做部分(Epic和EA平台)补充说明。

安装Lutris

1
sudo pacman -S lutris

如果pacman安装不了就使用yay,毕竟AUR库里有这个包

Epic平台安装

点开Lutris软件,在搜索栏输入epic game,你就能看到下面这个epic app的安装信息

Screenshot_20231122_014122

点击安装即可。

EA APP平台安装

如果要安装EA的话,就要多走一步,需要先完成wine的安装。

1
sudo pacman -S wine 

完成wine安装再点击左边的EA App,就能很顺利的安装上EA平台了,但目前由于我的硬盘受限没有安装游戏实验下去。

最后,来张steam、lutris、epic、ea四app同台合影

Screenshot_20231122_014908

Minecraft

国际版启动器

微软官方正版MC(国际版)

1
yay -S minecraft-launcher

Screenshot_20231122_165224

Screenshot_20231122_165341

Screenshot_20231122_165435

但目前只有JAVA版是能用的其他版本例如基岩都是显示设备不可用

Screenshot_20231122_165729

下面是JAVA版的展示

Screenshot_20231122_170242

根据下图可以看出目前是没有调用电脑的独显的,仅仅是使用了核显

Screenshot_20231122_170529

HMCL

1
yay -S hmcl-stable-bin

Screenshot_20231122_173619

进去游戏还是可以看到没有调用显卡,那么后期还得针对游戏进行显卡优化

Screenshot_20231122_173558

安装Pycharm_Professional正版

这里先去AUR (en) - Home (archlinux.org)查看Pycharm_Professional这个包名字

Screenshot_20231119_173812

然后调出我们的zsh终端,输入:

1
yay -S pycharm-professional

Screenshot_20231119_174501

Screenshot_20231119_174629

静静等待安装完成。。。 打开Pycharm你就能看到叫你激活的页面

打开下面网站,找一个可以点的进去的

网站

Screenshot_20231119_175201

点进去之后你能看到一个提示和很多软件,我们需要的就是提示给的破解包(里面有破解命令)相应的Pycharm的激活密钥这两个东西

Screenshot_20231119_175445

下好破解包之后,将其解压到/opt/pycharm-professional里面,然后cd /opt/pycharm-professional里面给权限chmod -R +777 jetbra,然后进入到/opt/pycharm-professional/jetbra/scripts/你会看到install.sh,执行它即可

即:

1
./install

Screenshot_20231119_224958

然后,注销电脑,重新登陆系统,点开Pycharm_Professional,点击 Activation code 然后把网站上的那个相应的Pycharm的激活密钥粘贴到激活面板然后确认Activate就行了。

激活后:

Screenshot_20231119_225632

python单进程

ping

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import subprocess

def ping(host):
result = subprocess.run(
'ping -c2 %s &> /dev/null' % host,shell=True
)
if result.returncode == 0:
print('%s:up'% host)
else:
print('%s:down'% host)

if __name__ == '__main__':
ips = ['192.168.0.%s' %i for i in range(1,255)]
for ip in ips:
ping(ip)

这个会ping得很慢,因为要等待前一个进程得到结果才能运行下一个命令

多进程

ping2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import subprocess
import os

def ping(host):
result = subprocess.run(
'ping -c2 %s &> /dev/null' % host,shell=True
)
if result.returncode == 0:
print('%s:up'% host)
else:
print('%s:down'% host)

if __name__ == '__main__':
ips = ['192.168.0.%s' %i for i in range(1,255)]
for ip in ips:
ret_val = os.fork()
if not ret_val:
ping(ip)
exit()

这个就会很快,因为用了多进程的概念(注意:是多进程不是多线程)

Windows是没有多进程的概念的,只有多线程;Linux有多进程和多线程的概念,两者要注意分开!!!!

产生僵死进程

frozen_process

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import os
import time

print('starting')
ret_val = os.fork()

if ret_val:
print('in parent')
time.sleep(30)
print('parent done')
else:
print('in child')
time.sleep(15)
print('child done')

image-20231023104631420

image-20231023104703212

线程挂起与不挂起_os.waitpid()

1
2
os.waitpid(-1,0) # 挂起父进程,子进程会被父进程看管,子进程一旦干完活马上被父进程杀死。期间不会产生僵死进程
os.waitpid(-1,1) # 不挂起父进程,子进程不会被父进程看管,会产生僵死进程。如父进程时间到了,结束了进程,子进程如果还有东西运行就继续运行下去(父进程迁移成为system),如果没有运行的东西(父进程迁移成为system)被system马上杀死

挂起父进程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import os
import time

print('starting')
ret_val = os.fork()

if ret_val:
print('in parent')
result = os.waitpid(-1,0) # 挂起父进程
print(result) # result是元组:(子进程pid,0)
time.sleep(3)
print('parent done')
else:
print('in child')
time.sleep(5)
print('child done')

父进程print('in parent'),然后运行到os.waitpid(-1,0)父进程挂起,子进程干活print('in child'),睡觉5秒后print('child done'),父进程开始杀死子进程,并且打印print(result),睡觉3秒后print('parent done')

不挂起父进程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import os
import time

print('starting')
ret_val = os.fork()

if ret_val:
print('in parent')
result = os.waitpid(-1,1) # 不挂起父进程
print(result) # result是元组:(0,0)
time.sleep(10)
print('parent done')
else:
print('in child')
time.sleep(5)
print('child done')