AI相关的ubuntu的骚操作


记录一些Ubuntu的操作,可能骚,也可能菜,方便快速检索,哈哈。

基础操作类

基操勿六。并非骚软件,可能是系统预装,也可能需要手动安装下子。

创建多层级文件夹

首先mkdir -p可以:

mkdir -p ~/.ssh/src/

如果有mkcd的话,mkcd ~/.ssh/src/也可以有一样的效果。但如果我想要创建多层级的话,还是需要mkdir -p.

比如,我想要在创建project 并且在project下面创建a/b/c/d 四个文件夹,并且在每个文件夹下,再创建src:

mkdir -p /project/{a,b,c,d}/src

文件压缩和分卷压缩

文件压缩就是用tar,压缩用-czf选项,解压缩用-xzf选项。这里记录一下分卷压缩和分卷解压缩

# 分卷压缩:split为分卷的命令,1024m表示每个分卷的大小为1024MB,压缩后会出现navi-docker.rar.tar.gz00,navi-docker.rar.tar.gz01等等文件
sudo tar -czf - navi-docker.rar |sudo split -b 1024m -d - navi-docker.rar.tar.gz
# 分卷解压缩
cat navi-docker.rar.tar.gz* | tar -xzf -
# 合并分卷内容
cat navi-docker.rar.tar.gz* > navi-docker.rar.tar.gz

查看当前有哪些用户

很简单,就w就可以看到了,不整code block了。或者是who也可以

批量kill任务

shell代码其实我没看懂,先贴上去了

ps -ef | grep python | grep -v grep //列出所有名字有python的进程
ps -ef | grep python | grep -v grep | awk '{print "kill -9 "$2}' //打印kill到所有这些进程的命令
ps -ef | grep python | grep -v grep | awk '{print "kill -9 "$2}' | sh//执行这些命令

任务前后台切换

在一个小博主的博客里看到的几条简单命令,记录一下。

#将任务放置后台
jobs #查看任务
fg #将任务放进前台运行
Ctrl+z # 将任务放进后台,暂停
bg #在后台运行暂停的任务
Ctrl+c #关闭任务 这条大家估计都会。。。。

在有任务时,可以先ctrl+z把他切后台并暂停,然后再用bg使其继续运行。fg把任务切换回前台。

查看磁盘使用情况

ubuntu有时候会把内存用完,可能是docker导致的,也可能是home中存了大量数据导致的,这时需要查看下磁盘空间使用情况。查看的基本命令是df和du,可以使用df --help和du --help查看使用详情。这里记录两个常用的。

$sudo du -h --max-depth=1
#output:
shaowang@DC-SMC-25:/var/lib/docker$ sudo du -h --max-depth=1
12G     ./containers
72K     ./network
4.0K    ./trust
4.0K    ./runtimes
28K     ./volumes
147M    ./image
72K     ./buildkit
4.0K    ./swarm
20K     ./builder
420G    ./overlay2
4.0K    ./tmp
20K     ./plugins
432G    .

可以看到,/var/lib/docker/overlay2占用了大量空间,目测这些空间是不会再使用了,不知道可不可以直接删除。

ssh不间断连接

ssh -o ServerAliveInterval=60 shaowang@DC-SMC-24
ServerAliveInterval=60 #client每隔60秒发送一次请求给server,然后server响应,从而保持连接
ServerAliveCountMax=3 #3次请求没有收到,自动断开连接

Ubuntu网络启动

有时机器重启后无法连通,ifconfig显示没有网络,这时重启网络即可:

sudo dhclient
sudo dhclient eth0

手工更新软件

ubuntu有时会出现软件未完全更新的状况,这时需要手工更新软件:

sudo apt-get dist-upgrade

启动一个沙雕docker image

这很沙雕,我都不想往上写

alias drun='sudo docker run -it --network=host --device=/dev/kfd --device=/dev/dri --ipc=host --shm-size 16G --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $HOME/:/dockerx'
drun shaowang_rocm/tensorflow:rocm3.1-tf1.15-dev
drun rocm/tensorflow:rocm3.1-tf1.15-dev

创建账户类

id username #查看user状态
# 创建账户
# 1、创建账户,创建/home/username文件夹,同事配置密码等信息
sudo adduser shaowang # 创建一个shaowang账户,后续会出来设置密码等等
# 2、给用户添加组
sudo  usermod -aG sudo shaowang # a表示添加,G表示组名,这里表示给shaowang添加sudo权限。也可以通过改写/etc/sudoers文件添加
# 3、给用户删除组
sudo usermod -G 组1  -G 组2 用户名
# 4、删除用户
sudo deluser tt

参考了网络文档- 1

挂载类

由于yun服务通常和自己的Linux主机无法互相连通,因此Unix之间的mount服务几乎处在一种不能用的状态。
通常我们是用Samba来互联Windows工作站和Linux云服务器的文件,好在Samba也可以在Linux之间共享文件夹,大赞。

Linux服务器和Windows工作站

Linux服务器和Windows主机之间可以通过Samba服务完成挂载。

配置方式:

#如果没有安装samba服务,则先安装
apt-get update
apt-get install samba
#完成安装后,直接开始配置
vi /etc/samba/smb.conf #编辑samba的配置文件
#在该文件内,添加
[shaowang]
  path = /home/shaowang
  available = yes
  browseable = yes
  valid users = shaowang
  public = yes
  writable = yes
  directory mask = 0777
  create mask = 0777
#退出vim后->
sudo smbpasswd -a shaowang #配置samba使用者的密码,这里的使用账户必须已经存在
#设置密码后则Windows可以访问

Linux服务器和Linux工作站

由于服务器和工作站之间并非相互可以连通,使用mount不能成功。但是拥有xwindow system的工作站也可以访问samba共享目录,开熏!!!!

1、打开文件夹

2、在左侧栏目选择“连接到服务器”

3、smb://10.67.10.85(服务器IP)

之后就能够看到服务器上samba出来的文件夹了,选择自己的文件夹,登录访问即可。

除开挂载的scp拷贝操作

理论上scp不属于挂载了,但是我不管,我就要把他放这儿说。。。
scp和cp的使用几乎是一样的,照葫芦画瓢就记住了。
参考网页:2

#拷贝本机/home/test整个目录至远程主机172.168.1.100的/home/bak目录下
scp -r /home/test/ root@172.168.1.100:/home/bak/
#拷贝单个文件至远程主机
scp /home/test/test.txt root@172.168.1.100:/home/bak/
#其实上传文件和文件夹区别就在参数 -r, 跟cp, rm的参数使用差不多, 文加夹多个 -r
 
#远程文件/文件夹下载
scp -r root@172.168.52.10:/home/bak/ /home/test/new/

rsync拷贝

突然被安利了rsync,搜来一看果然强大,今天懒得一批,不想试了,先留个网址,后续学习:3

输入输出类

标准输入输出

Linux下的标准中:

/dev/null 表示空设备,可以理解为内存黑洞,常用与测试设备访存效率

0 表示stdin标准输入

1 表示stdout标准输出

2 表示stderr标准错误

2>&1 表示把标准错误重定向到标准输出的引用中。

输出加显示

命令 2>&1 | tee run.log

有时log会以stderr打印出来,所以先把2重定向到1上,然后tee是指把打印输出到run.log中的同时,在屏幕上打印。

软件操作相关

IPMI

我现在还不是太会用,通过浏览器输入地址。账号:ADMIN 密码:*****

dpkg出问题

dpkg return error code 2

在apt install 某些东西的时候遇到:

electing previously unselected package liberror-perl.
dpkg: unrecoverable fatal error, aborting:
 files list file for package 'java-common' is missing final newline
E: Sub-process /usr/bin/dpkg returned an error code (2)

这个就真的是list上面缺少一行回车,可以通过下面脚本给所有list加个回车

#!/usr/bin/python
 
 
# 8th November, 2009
# update manager failed, giving me the error:
# 'files list file for package 'xxx' is missing final newline' for every package.
# some Googling revealed that this problem was due to corrupt files(s) in /var/lib/dpkg/info/
# looping though those files revealed that some did not have a final new line
# this script will resolve that problem by appending a newline to all files that are missing it
# NOTE: you will need to run this script as root, e.g. sudo python newline_fixer.py
 
import os
 
dpkg_path = '/var/lib/dpkg/info/'
paths = os.listdir(dpkg_path)
for path in paths:
    path = dpkg_path + path
    f = open(path, 'a+')
    data = f.read()
    if len(data) > 1 and data[-1:] != '\n':
        f.write('\n')
        print 'added newline character to:', path
    f.close()

vim相关

vim内搜索:

esc→:/word to search Enter

n下一个

N上一个

beyond compare

windows版本BC,解决30天试用方法:

不敢说不敢说
1)在搜索栏中输入 regedit ,打开注册表
2)删除项目:计算机\HKEY_CURRENT_USER\Software\ScooterSoftware\Beyond Compare 4\CacheId

linux版本BC,安装并解决30天使用方法:

下载地址:4

sudo dpkg -i 安装包.deb
cd $HOME/.config/bcompare
rm registry.dat

tmux

这个神器我之前没有用过,据说可以断线重连。学习一下子。

先放一个说的比较好的网站过来吧:5

通过上面的网址,基本上可以查得到常用的命令。

vs-code

使用ssh秘钥连接remote

在vs code的客户端(通常是windows)创建公钥私钥

ssh-keygen -t rsa -b 4096

会产生出:C:\Users\shaowang/.ssh/id_rsa 和 C:\Users\shaowang/.ssh/id_rsa.pub (路径可以自己选择哟)

  1. 其中id_ras.pub是公钥,需要上传到服务器。
#mkdir -p ~/.ssh
#chmod 700 ~/.ssh
vim ~/.ssh/authorized_keys #把 id_ras.pub 中的内容粘贴进去
#chmod 600 ~/.ssh/authorized_keys
#sudo service ssh restart
  1. 其中id_rsa是私钥,配置在vs code的config里面去
Host name-of-ssh-host-here
    User your-user-name-on-host
    HostName host-fqdn-or-ip-goes-here
    IdentityFile ~/.ssh/id_rsa-remote-ssh
 
 
e.x.:
Host dc-smc-25
  HostName dc-smc-25
  User shaowang
  ForwardAgent yes
  IdentityFile C:\Users\shaowang/.ssh/id_rsa

remote-ssh始终无法连接

会提示说一直在download from wget,这是需要删除/home/#####/.vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/vscode-remote-lock.#####.78a4c91400152c0f27ba4d363eb56d2835f9903a,这是个lock,会阻止连接。亲测有效。网上说或者使用command:Kill VS Code Server on Host…。但是这个命令未测试。

remote-ssh无法连接旧服务器

如果服务器的ssh-key换掉了的话,本机会记录原先的key,在严格匹配的模式下,会导致ssh连接不通。会报出下面的错误码:

ECDSA host key “ip地址” for has changed and you have requested strict checking.

解决办法很简单,删掉本机存的旧key:

ssh-keygen -R dc-smc-25

调试Python代码时加入输入参数

1.打开launch.json文件

2.在文件中加入args:
调试Python代码时插入入参

修改vscode terminal的显示行数

默认的显示行数是1000,显然不太够,改成5000基本能够满足需求,修改的话是在settings里面的一个参数:terminal.integrated.scrollback,把它改成5000就好了。

git

ubuntu升级git

先通过 git version 查询git当前版本号,一般原生的都比较老旧。随后添加一下命令更新:

add-apt-repository ppa:git-core/ppa
apt-get update
apt-get install git
git version

完事儿以后再通过git version查看一下是否升级到位了。

Ubuntu-anaconda

安装

去清华的tuna源上下载安装:6
稍后会把Linux的安装文件放上。不放了,太大了。。

更换conda源

使用conda如果要安装国外的源,则可能会因为网页连不上导致安装失败,这是需要更换国内的源。

加源方式1:

# 清华源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
# 中科大源
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/
conda config --set show_channel_urls yes

加源方式2:

vim ~/.condarc
channels:
  - https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
  - https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - defaults
show_channel_urls: true

网上大部分人说的都是这个玩意,你要用了会发现,这么做不行,还是连不上,wc,咋办呢?

把~/.condarc里面的- defaults删掉,这玩意儿坑的一批,坚决不留他。有人说https也会有影响,可以试试,我们的服务器上http不行但是https可以。

清华源总是连不上去

不知道什么原因 清华源总是连不上去。conda install始终无法成功。。。。创建conda新环境始终无法成功。

安装一些库可以使用豆瓣源,是豆瓣吗 我也不知道。。。

pip install numpy -i https://pypi.doubanio.com/simple

ubuntu装机

U盘安装

  1. 下载ubuntu的ISO镜像文件:https://ubuntu.com/download/desktop 这个网站中默认给的是20.04,可以选择18.04,但是最好选择lts,这表示会长期维护五年之久。

  2. 制作安装盘的神奇小工具,官网推荐可以信赖:https://rufus.ie/

  3. 从BIOS选择u盘安装即可

使用中见到的一些错误

Linux文件系统修复

常见会报错说

The root filesystem on /dev/sda1 requires a manual fsck

这表明出现了一个磁盘检测不通过的错误。并会见到一个极其古老的Linux命令行出现:

/dev/sda1: UNEXPECTED INCONSISTENCY:; RUN fsck MANUALLY
        (i.e., without -a or -p options)
fsck exited with status code 4
The root filesystem on /dev/sda1 requires a manual fsck
modprobe: module ehci-orion not found in modules.dep
 
BusyBox v1.22.1 (Debian 1:1.22.0-9+deb8u1) built-in shell (ash)
Enter 'help' for a list of built-in commands.
 
/bin/sh: can't access tty; job control turned off
(initramfs) _

其实它已经告诉了需要干什么,就是手动做fsck就是磁盘检查

(initramfs) fsck -y /dev/sda2

USB过流 连bios都进不去

这时会有一个提醒,说use current error,也会见到下面的样子,BIOS也进不去:
请添加图片描述
原因其实已经说了,先拔掉所有USB外设设备,然后断电一段时间,再重新上电,如果没事,就说明有一个USB外设短路。如果还是有事,说明主板的USB主接口完犊子。

Ubuntu上/dev/loop0到/dev/loop18被100%占用

在Ubuntu上用df -h看内存使用情况时,会发现一大堆loop的东西,全部是满额占用,有时会因为他们导致各种奇奇怪怪的问题。这个东西全部是在软件安装中一个叫snap的软件产生的,他是一个Ubuntu的新型软件包管理方式,现在已经有人弃用他了,所以可以放心卸载。

apt autoremove --purge snapd

  1. https://blog.csdn.net/u011774239/article/details/48463393/ ↩︎

  2. https://blog.csdn.net/songshuguowang/article/details/86478382 ↩︎

  3. https://man.linuxde.net/rsync ↩︎

  4. http://www.scootersoftware.com/download.php ↩︎

  5. http://www.ruanyifeng.com/blog/2019/10/tmux.html ↩︎

  6. https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ ↩︎

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值