记录一些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 (路径可以自己选择哟)
- 其中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
- 其中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:
修改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盘安装
-
下载ubuntu的ISO镜像文件:https://ubuntu.com/download/desktop 这个网站中默认给的是20.04,可以选择18.04,但是最好选择lts,这表示会长期维护五年之久。
-
制作安装盘的神奇小工具,官网推荐可以信赖:https://rufus.ie/
-
从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
https://blog.csdn.net/u011774239/article/details/48463393/ ↩︎
https://blog.csdn.net/songshuguowang/article/details/86478382 ↩︎
https://man.linuxde.net/rsync ↩︎
http://www.scootersoftware.com/download.php ↩︎
http://www.ruanyifeng.com/blog/2019/10/tmux.html ↩︎
https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ ↩︎