tutorials
https://www.tecmint.com/linux-dir-command-usage-with-examples/
shell
& 符号(非阻塞运行,后台运行)
手动 ctrl+z fg <=> & 放到shell末尾,jobs查看后台进程,fg job_id放到前台
nohup命令:后台命令脱离终端运行
http://c.biancheng.net/view/1080.html
w和who命令:查看登陆用户信息
last和lastlog命令:查看过去登陆的用户信息
http://c.biancheng.net/view/3875.html
chown命令:修改文件和目录的所有者和所属组
Linux权限位
http://c.biancheng.net/view/753.html
tar命令做打包操作(tar zip gzip)
http://c.biancheng.net/view/3976.html
.zip .gz .tar .tar.gz
命令行快捷键
linux下对Shell/.sh脚本加密
http://wuhongyi.cn/CodeProject/shell/shelljiami.html
linux PATH环境变量全解析
http://wuhongyi.cn/CodeProject/shell/linuxPATH.html
https://www.cnblogs.com/youyoui/p/10680329.html
查看进程状态
ps aux | grep python
watch -n1 'ps aux | grep python'
查看文本内容
find . -name "*.in" | xargs grep "thermcontact"
通过PID找到进程
# 找到pid
# 匹配
ps -ef|grep <PID>
或者
watch -n 1 'fuser -v /dev/nvidia*'
后台
windows共享文件夹挂载到linux(或直接挂载到docker中)
http://linux.51yip.com/search/mount
# windows创建文件夹,属性修改权限为共享
shared_from_win_to_linux
# linux挂载到shared_win
# 挂载到linux或者docker中
sudo mount -o username=jet,password=Aa123456,iocharset=utf8,dir_mode=0777,file_mode=0777 -l //192.168.30.70/shared_from_win_to_linux ./shared_win/
sudo mount -o username=jet,password=Aa123456,iocharset=utf8,dir_mode=0700,file_mode=0700 -l //192.168.30.70/shared_from_win_to_linux ./shared_win/
# 挂载到docker容器中
mount -t cifs -o username=windows用户名,password=windows密码,ro,vers=2.0 //windowsip地址/共享的目录名称 /win/share(centos/docker中的目录名称)
192.168.30.70为windowsip
username=jet,password=Aa123456 登陆号
-o rw,uid=48,gid=48,username=jet,password=Aa123456 中间逗号分割 不能有空格
# 取消挂载
sudo umount shared_win/
挂载远程服务器的路径到Windows系统中
1 https://zhuanlan.zhihu.com/p/71052208 samba
yum -y install samba
vim /etc/samba/smb.conf
pdbedit -a username # jet
pdbedit -L
windows映射驱动器
\\ip\\your_config_name # samba配置文件中 [your_config_name]
输入
用户名 jet
密码 Aa123456
2 sshfs
\\sshfs\用户名@IP地址!端口\路径
示例:
\\ssfs\chenlianfu@122.205.95.116!22\relative_path
relative_path是相对于用户家目录的相对路径
rsync远程同步命令
http://c.biancheng.net/view/6121.html
sudo rsync -av /home/jet/projects/socket_py/ /home/jet/shared_win/
sudo rsync -av --exclude=client.py /home/jet/projects/socket_py/ /home/jet/shared_win/
sudo rsync -av --exclude=client.py --exclude=server.py /home/jet/projects/socket_py/ /home/jet/shared_win/
创建用户和权限管理
加密方法(还是需要文件加密才行,因为容器进出都是root)
# 在linux的docker中挂载windows共享文件夹,同时设置挂载权限700,非root不可访问
sudo mount -o username=jet,password=Aa123456,iocharset=utf8,dir_mode=0700,file_mode=0700 -l //192.168.30.70/shared_from_win_to_linux ./shared_win/
# docker创建jet用户
useradd -d /home/jet -m jet
passwd jet # 123456
su jet # su root # Aa123456
ctrl+D
# 设置用户jet,登陆的时候非root即可
docker exec -it -u jet face /bin/bash
chmod [选项] [ugoa] [– + =] [r,w,x]文件
ssh连接docker容器;docker容器设置root密码
端口映射
# windows cmds
@echo on
ssh jet@192.168.33.32 -p 22 -L 127.0.0.1:6006:127.0.0.1:6006
查看CPU INFO
查看系统中CPU的型号
frilab@ubuntu:~$ cat /proc/cpuinfo |grep "model name"| sort -u
model name : Intel(R) Xeon(R) CPU E7- 4807 @ 1.87GHz12
计算系统中有几颗CPU
frilab@ubuntu:~$ cat /proc/cpuinfo |grep "physical id" | sort -u |wc -l
4
计算每颗CPU中有几颗核心
frilab@ubuntu:~$ cat /proc/cpuinfo |grep "cpu cores" |sort -u
cpu cores : 6
计算系统中有多少个CPU线程
frilab@ubuntu:~$ cat /proc/cpuinfo |grep "processor" |wc -l
48
————————————————
原文链接:https://blog.csdn.net/baidu_38432732/article/details/82836909
---------------------------------------------------------------------------------------------------------
1、查看 CPU 物理个数
grep 'physical id' /proc/cpuinfo | sort -u | wc -l
2、查看 CPU 核心数量
grep 'core id' /proc/cpuinfo | sort -u | wc -l
3、查看 CPU 线程数
grep 'processor' /proc/cpuinfo | sort -u | wc -l
4、查看 CPU 型号
dmidecode -s processor-version
5、查看 CPU 的详细信息:
cat /proc/cpuinfo
# 查看每个线程CPU占用
https://www.cnblogs.com/ghost240/p/3863774.html
ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu
限制CPU占用率
修改环境变量
export OMP_NUM_THREADS=1
在代码里面设置线程数
torch.set_num_threads(int thread)
或者
dataloder的num_workers线程数调少点
cpulimit命令
wget -O cpulimit.zip https://github.com/opsengine/cpulimit/archive/master.zip
unzip cpulimit.zip
cd cpulimit-master
make
cp src/cpulimit /usr/bin
# 加sudo
https://blog.csdn.net/loyachen/article/details/52167124
TOP
# 用top命令指定固定的PID
top -p $PID
# 查看某个进程所有线程
top -p 1143851 -H
使用ps查询指定进程名或者PID的占用情况
ps -aux | grep zookeeper
ps -aux | grep 2181
使用 ps 命令找出 CPU 占用高的进程
ps -eo pid,ppid,%mem,%cpu,comm --sort=-%cpu | head
apt-get彻底卸载软件包
# 删除软件及其配置文件
apt-get --purge remove <package>
# 删除没用的依赖包
apt-get autoremove <package>
# 此时dpkg的列表中有“rc”状态的软件包,可以执行如下命令做最后清理:
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
命令行配色
export PS1='\[\e[1;35m\]\u@\h:\[\e[0m\]\[\e[1;33m\]\w\[\e[1;35m\]\[\e[0m\]\[\e[1;34m\] \$ \[\e[1;32;1m\]'
source ~/.bashrc
crontab -e 定时任务
https://segmentfault.com/a/1190000023186565
https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html
$ crontab -e
输入:
# m h dom mon dow command
分钟 小时 日 月 星期几 命令
SHELL=/bin/bash
PATH=~/bin:/usr/bin/:/bin
$ ps -e | grep cron 查看是否运行定时
ldd
mobaXterm就可以在服务器端通过SSH运行python的plot.imshow()
https://mobaxterm.mobatek.net/download.html
vim ~/.bashrc
输入
# display
export DISPLAY=192.168.30.70:0.0 # windows ip:mobaXterm port
然后
source ~/.bashrc
cv2.imshow("Result", frame)
if cv2.waitKey(1)&0xFF == ord('q'):
break
cv2.destroyAllWindows()
shell脚本中针织判断和编程是相反的,零为真,非零为假。
vscode配置jupyter lab
https://blog.csdn.net/u011119817/article/details/115966917
# 默认在用户目录下~/,名为deep_rl的conda环境下
conda activate deep_rl
conda install jupyterlab
conda install ipykernel
pip install ipywidgets widgetsnbextension pandas-profiling
# !jupyter nbextension enable --py widgetsnbextension # 在notebook内运行, 不一定需要
# 把当前conda虚拟环境deep_rl 显示为 jupyterlab中的kernel名为deep_rl:stable-baselines
# jupyter kernelspec remove deep_rl 移除环境
# 方便我们在jupyter lab切换环境
python -m ipykernel install --user --name notebook --display-name py10_pt1.12
nohup jupyter lab --port 10008 --allow-root &
cat nohup.out
直接端口mapping
vscode选择conda环境需要插件 Jupyter PowerToys
进度条progress
https://github.com/Xfennec/progress
progress -q
progress -w
watch progress -q
watch progress -w
man查看内置手册
man mv
short cuts
C-r 查找历史执行命令,很便捷的调用历史命令的方式,输入历史命令关键字,就会及时显示匹配命令,enter 即可执行
C-p 前一条指令
C-n 后一条指令
C-c 终止已经运行的命令(针对还没有运行完的命令和脚本,实际为向相关进程发送中断信号)或者取消已经输入的命令
C-o/C-j/C-m 执行当前行输入的命令,跟 enter 类似
C-l 清屏,clear 命令
C-a 移动光标到行首
C-e 移动光标到行尾
C-t 交换光标前俩字符的位置
C-h 往后删除一字符
C-d 往前删除一字符
C-b 往后移动一个字符
C-f 往前移动一个字符
C-w 剪切前一个单词(空格间隔的字符串单元)
C-u 剪切到行首
C-k 剪切到行尾
C-y 粘贴剪切
查看线程数
ps hH p pid|wc -l
top -H -p pid # 或者shift+h
% cpu 是表示单核 cpu 的占用率, 而不是占用所有 cpu 的占用率. 即如果我们是 32 核 cpu, 那么 3200% 才是最高的 cpu 利用率
CPU个数: 电脑插槽上的CPU个数, 物理cpu数量
CPU核数:一个物理CPU上面能处理数据的芯片组的数量
CPU逻辑核数:一般情况,我们认为一颗cpu可以有多核,加上intel的超线程技术(HT), 可以在逻辑上把一个物理线程模拟出两个线程来使用,使得单个核心用起来像两个核一样,以充分发挥CPU的性能
总核数 = 物理CPU个数 X 每个物理CPU的核数
总逻辑核数= 物理CPU个数 X 每个物理CPU的核数 X 超线程数
# 查看CPU型号
cat /proc/cpuinfo | grep 'model name' | sort | uniq
# 查看物理CPU个数
cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l
grep 'physical id' /proc/cpuinfo | sort -u
# 查看单个CPU的核数
cat /proc/cpuinfo| grep "cpu cores"| uniq
grep 'core id' /proc/cpuinfo | sort -u | wc -l
# 查看CPU逻辑核数, 此处查看的线程数是总的线程数,可以理解为逻辑cpu的数量
cat /proc/cpuinfo| grep "processor"| wc -l
grep 'processor' /proc/cpuinfo | sort -u | wc -l
# 如果是2倍 可见该CPU支持并已打开超线程
总线程数<= CPU数量:并行运行
总线程数> CPU数量:并发运行
+
执行top ,按 shift+m ,对%MEM降序排列并分析结果
在命令行输入top,然后shift+p查看占用CPU最高的进程,记下进程号
一个程序至少有一个进程,一个进程至少有一个线程.
并发技术。实现并发技术相当复杂,最容易理解的是“时间片轮转进程调度算法”,它的思想简单介绍如下:在操作系统的管理下,所有正在运行的进程轮流使用CPU,每个进程允许占用CPU的时间非常短(比如10毫秒),这样用户根本感觉不出来CPU是在轮流为多个进程服务,就好象所有的进程都在不间断地运行一样。但实际上在任何一个时间内有且仅有一个进程占有CPU。
Argument list too long”解决方法
https://www.cnblogs.com/dev-sy/p/12925087.html