Linux for machine learning
1、常用命令
cd:在终端切换不同的文件夹
cd .. # 返回上级目录
cd - # 返回刚刚所在的目录
cd ../../ # 向上返回俩次
cd ~ # 去往HOME文件
cd real_path # 去往绝对路径指向的地方
ls:列出该路径下的文件or文件夹
ls # 单列出文件名+文件夹名
ls -l # 列出文件+文件夹的详细信息,有文件的权限,用户名,文件大小,修改日期文件名等
ls -a # 显示所有文件,包括隐藏文件
ls -lh # 该指令显示的文件信息更方便人们读取/观看
ls --help # 其他功能可以通过--help来查看
Touch 新建文件
touch file # 新建文件
touch file1 file2 file3 # 可以同时新建多个文件
cp 复制
cp old_file new_file # 将old_file复制到new_file中
# 其中,如果new_file已经存在的话,就会被old_file所覆盖掉
cp -i old_file new_file # 覆盖前将询问是否覆盖,回答Yes/No
cp file folder/ # 复制文件去文件夹
cp -R folder1/ folder2 # 复制文件夹,需加上-R
cp file* folder/ # 复制多个文件 *代表前面是file后面是什么名字无所谓
cp file1 file2 folder1 # 将文件file1和file2复制到文件夹folder1下面
mv 剪切
mv file folder/ #移动文件到文件夹
mv file_old file_new #重命名!!!
mkdir 新建文件夹
mkdir folder #新建文件夹
mkdir -p folder1/file #循环建立文件夹+文件
rmdir 移除文件夹
rmdir folder2 #移除文件夹 这样移除的文件夹必须是空文件夹,里面不能有文件
rm 移除文件
注意:千万不要rm -rf /
,这样会清空你的电脑的!!!
rm file # 移除单个文件
rm -i file # 移除文件,并且每个要移除的文件都有提示,会询问您是否确定删除
rm -I f1 f2 f3 # 移除多个文件,但仅当超过3个文件才进行提示
rm -R/r folder1 # 递归删除文件夹,会清除这个文件夹内所有文件(包括这个文件夹)
nano 文件编辑工具
Ctrl+x
保存并退出
gedit 文本编辑工具
和windows记事本差不多
cat 用来显示文件内容,或者将某个文件的内容写到其他文件中
cat 1.py # 查看文件内容
cat 1.py > 2.py # 将1.py文件的内容放到另一个文件中去 (会覆盖,并不是追加)
cat 1.py 2.py > 3.py # 将1.py和2.py文件内容打包放到3.py中去
cat 1.py >> 2.py # 会将1.py的内容追加到2.py文件的尾部
安装deb安装包
sudo dpkg -i XXX.deb
sudo apt-get -f install
2、Linux文件权限
ls 查看权限
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HjNICMRE-1634645576833)(/Users/mr.wei/Desktop/master study/image/Linux for machine learning/image-20211017094230832.png)]
-
Type:
-
表示文件、d
表示文件夹,其他随时搜 -
User:表示User身份的权限
-
Group:表示Group中的Users的权限(因为一个Group中可能有多个User)
-
Others:除了User和Group以外人的权限
r
:读w
:写x
:执行-
:不具备相应的权限
chmod:修改权限
chmod [who] [如何修改] [which file]
chmod u+r 1.py #让user增加read权限
# [who] represent user/group/others
# [how to change] +/-/= 代表 增加/减少/等于 某些权限(由r,w,x组合成的权限)
# [which file] the file which want to change
还可以使用数字改变权限,八进制数字
chmod 777 1.py #表示1.py的user/group/others都拥有读/写/执行的能力
# 777: 代表八进制,转换为二进制为:111 111 111
# 分为三组,每组分别代表user, group, others
# 一组 3 bits 分别代表r/w/x, 0/1代表是否拥有相对应的权限!
# 101 : 代表有读/执行的权限,但没有写的权限! 转换为八进制为:5
对于python文件的权限
对于python文件,最好给其赋予可执行的权限,因为没有执行权限的python文件需要:
$ python3 1.py # 需要这样去运行
$ ./1.py # 拥有执行权限的文件可以这样运行
所以可以在python脚本文件第一行加一句话:
#!/usr/bin/python3 # s是为了告诉你的电脑执行这个文件的时候用什么来加载
3、MacOS通过SSH远程Linux(仅在局域网内控制)
1、给Linux安装OpenSSH
$ sudo apt-get install openssh-server
2、Mac远程控制Linux
$ ssh [要控制Linux的用户名]@[Linux电脑的IP]
# Linux电脑的IP使用命令ifconfig获取
3、免密登陆
首先在mac上生成一个pulic/private key
,然后公钥传给Linux,私钥留在mac上,这样以后就不用每次输入密码了
$ ssh-keygen # 生成公私钥
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/mr.wei/.ssh/id_rsa): y
Enter passphrase (empty for no passphrase): #这里可以不输入,直接回车
Enter same passphrase again:
$ ssh-copy-id [被控制Linux的用户名]@[它的IP] #将公钥传至Linux电脑中x
随后就可以不需要输入密码,直接输入命令ssh [用户名]@[IP]
便可以进入Linux系统的终端
4、使用VNC远程连接
在Linux上输入如下命令:
$ sudo apt-get install x11vnc
并且为其设置密码
$ x11vnc -storepasswd
并输入以下命令,使得开启VNC的server
$ x11vnc -usepw
用Mac连接VNC
打开软件Screen Sharing,打开并且输入Linux电脑的IP地址,随后输入密码,便可以远程连接了
5、云端运行计算
1、首先在mac端新建一个python脚本,并输入相应的代码,eg:
# coding-utf-8
import platform
a = 0
for i in range(9999):
a += 1
print("Finish job, result = %i" % a)
print("This is", platform.system())
2、然后在mac的终端中输入
$ ssh mrwei@192.168.0.107 python3 < /Users/mr.wei/Desktop/code/python_study_code/Python_basic_teach/machine_learning.py
Finish job, result = 9999
This is Linux
文件传输
如果有很多python文件,并且运行的时候一环扣一环,这是我们就可以先全部复制所有必须文件Linux的缓存区或者桌面,然后再使用ssh在Linux云端的运行传送过去的文件
1、首先要将文件复制到云端(Linux桌面)上
$ scp /Users/mr.wei/Desktop/code/python_study_code/Python_basic_teach/{1,test}.py mrwei@192.168.0.107:~/Desktop
1.py 100% 193 27.7KB/s 00:00
test.py 100% 79 15.4KB/s 00:00
2、执行的话,需要将后面的指令用""
框起来,说明是要发送去云端在执行。
$ ssh mrwei@192.168.0.107 "python3 ~/Desktop/test.py"
3、如果云端产生了一个新文件,你想复制回来可以使用指令:
$ scp mrwei@192.168.0.107:~/Desktop/test.py /Users/mr.wei/Desktop/code/python_study_code/Python_basic_teach
做gym的强化学习注意事项
如果你想使用ssh远程打开云端的窗口程序,默认是不允许的,所以必须设置一个参数,eg:
$ ssh mrwei@192.168.0.107 "export DISPLAY=:0; firefox" # 比如要打开火狐浏览器,需要在前面加上参数export DISPLAY=0
同样,在强化学习中,需要使用:
env.render() # 这句话会将gym模块的环境显示在屏幕上
因为它需要打开窗口程序,所以在运行这个脚本的时候,我们需要设置参数,eg:
$ ssh mrwei@192.168.0.107 "export DISPLAY=:0; python3 xxx.py"
6、mac中共享Linux的文件夹
1、设置分享文件夹
1)可以在Linux电脑的Home下面设置一个share文件夹(当然也可以在其他地方)
2)右击这个文件夹,点击Local Network Share
,然后☑️Share this folder
,然后会让你安装samba
,如果出现问题,去终端自行安装sudo apt-get install samba
3)安装好之后,重新操作第2步,然后☑️Allow others to create ....
,然后点击Create share
4)然后在设置一个密码
$ sudo smbpasswd -a [用户名]
#第二行设置密码
在mac端找到刚刚的共享文件夹
打开访达,然后在上方找到前往,然后选择网络,然后找到选择你的计算机名,输入密码进入之后就可以看到共享文件夹了!
参考:莫烦PYTHON