Linux 命令
链接 ln
sudo ln -sf /usr/bin/g++-8 /usr/bin/g++
ln - make links between files
SYNOPSIS
ln [OPTION]... [-T] TARGET LINK_NAME (1st form)
ln [OPTION]... TARGET (2nd form)
ln [OPTION]... TARGET... DIRECTORY (3rd form)
ln [OPTION]... -t DIRECTORY TARGET... (4th form)
man 命令
man -b (向前翻一屏) space (向后翻一屏) /keyword 查找 n: 下一个
whatis command # 查询命令执行什么功能
快捷键
Ctrl+c #在命令行下起着终止当前执行程序的作用,
Ctrl+d #相当于exit命令,退出当前shell
win #搜索浏览程序文件音乐文件
ctrl+L #清除屏幕
ctrl+A #光标移到行首
super+R # terminal
ctrl+shift+prtsc #截屏到剪切板
super+h #隐藏窗口
super+up #窗口最大化
super+down #窗口最小话
压缩包操作
tar -zxvf 4.1.2.tar.gz
unzip -d /temp test.zip #解压到指定的目录下,需要用到-d参数
文件下载
wget -O #下载并以不同的文件名保存
wget -b #后台下载 tail -f wget-log 查看下载速度
wget –spider url #测试下载链接是否可用等等
软件安装命令 dpkg | apt | snap |ppa 使用:
dpkg -p package-name #显示包的具体信息
dpkg -s package-name #报告指定包的状态信息
dpkg -l #显示所有已经安装的Deb包,同时显示版本号以及简短说明
dpkg -P #删除一个包(包括配置信息)
dpkg -A package_file #从软件包里面读取软件的信息
dpkg -i <.deb file name> #安装软件
apt update|install|upgradable|remove|purge|search# tab键自动补全,apt下载时有锁
#snap是一种全新的软件包管理方式,它类似一个容器拥有一个应用程序所有的文件和库,各个应用程序之间完全独立。所以使用snap包的好处就是它解决了应用程序之间的依赖问题,使应用程序之间更容易管理。但是由此带来的问题就是它占用更多的磁盘空间.snap软件包一般安装在/snap目录下
snap list #罗列
snap find | install | refresh | remove package
snap changes # 查看正在进行的下载
snap abort id # 停止下载
sudo apt-get install ppa-purge
To purge a PPA, you must use the following command:
sudo ppa-purge ppa:someppa/ppa 删除ppa 及对应软件
sudo add-apt-repository ppa:someppa/ppa
sudo apt update
sudo add-apt-repository --remove ppa:someppa/ppa
网络命令 netstat ,top
# net-tools 包括ifconfig,netstat 等网络工具
top: #查看电脑个进程占用资源情况 b 高亮显示当前进程.
netstat -a :Listing all ports (both TCP and UDP) using option.
netstat -l : active listening ports connections
netstat -s : displays statistics by protocol
netstat -i : show the network interface
netstat -r : show the routing
netstat -ie : like ifconfig
netstat -ap | grep http : find the listening program
#查找程序是否运行
#pgrep command – Looks through the currently running bash processes on Linux and lists the process IDs (PID) on screen.
pgrep nginx
#pidof command – Find the process ID of a running program on Linux or Unix-like system
pidof nginx
#ps command – Get information about the currently running Linux or Unix processes, including their process identification numbers (PIDs).
ps aux | grep nginx
设置代理
set | grep -i all_proxy
# Unset socks proxy
unset all_proxy #根据上个命令输出决定是否用大写还是小写
unset ALL_PROXY #系统中的设置还在
# Install missing dependencies:
pip install pysocks
# Reset proxy
source ~/.bashrc
evince pdf 文件查看
软件安装
CPU 温度
sudo apt install lm-sensors hddtemp
sudo sensors-detect
sensors
#如果有虚拟温度显示
sudo apt install psensor #设置开机自启,监控温度
VimOp
操作符 | 作用 |
---|---|
control +A |
移动光标至行首 |
control +E |
移动光标至行尾 |
control +U |
删除整行命令 |
control +K |
删除光标后面的内容 |
option +← 、→ |
按词组移动光标 |
!! | 执行上一条命令 |
! | 重复命令,例如$ ! -3 执行前面三条命令; $ ! pod 重复最近一次pod命令 |
| | 将左侧的命令结果人给右侧命令 |
> | 等待前一天命令结束 |
&& | 多条命令同时执行 |
& | 不管前面执行是否成功都执行后面的命令 |
Cmake
- 中find_package() 工作原理:https://www.jianshu.com/p/46e9b8a6cb6a
cmake-gui #图像化cmake
cmake --version
apt-get remove cmake
cd /usr/local/src
wget https://github.com/Kitware/CMake/releases/download/v3.15.3/cmake-3.15.3.tar.gz
tar -xvzf cmake-3.15.3.tar.gz
cd cmake-3.15.3
./bootstrap
make -j4
make install
##python 使用C++11 框架 pylind11
gcc cpp g++ 区别
gcc和g++的主要区别
# 1. 对于 *.c和*.cpp文件,gcc分别当做c和cpp文件编译(c和cpp的语法强度是不一样的)
# 2. 对于 *.c和*.cpp文件,g++则统一当做cpp文件编译
# 3. 使用g++编译文件时,g++会自动链接标准库STL,而gcc不会自动链接STL
# 4. gcc在编译C文件时,可使用的预定义宏是比较少的
# 5. gcc在编译cpp文件时/g++在编译c文件和cpp文件时(这时候gcc和g++调用的都是cpp文件的编译器),会加入一些额外的宏,这些宏如下:
# 6. 在用gcc编译c++文件时,为了能够使用STL,需要加参数 –lstdc++ ,但这并不代表 gcc –lstdc++ 和 g++等价,它们的区别不仅仅是这个
#gcc 版本
gcc -version
sudo apt-get install gcc-5 g++-5
sudo update-alternatives --install /usr/bin/gcc gcc/usr/bin/gcc-5 50 #change privilege
SCP文件互传
scp ubuntu@140.143.210.30:/usr/local/apache-tomcat-9.0.22/webapps/temp.zip ~
#scp 命令将服务器上文件拷贝至本地
ubuntu VMWare worstation pro 15
#下载地址 https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html
#VMware Workstation All Key:https://www.cnblogs.com/dunitian/p/8414055.html
sudo ./VMWare-*
sudo vmware-installer -u vmware-workstation #卸载
网速测量speedtest
git clone https://github.com/sivel/speedtest-cli.git
cd speedtest-cli
python speedtest.py
#具体可以看下readme操作,可以通过pip 方式安装
pytorch
#方式一:
# 通过官方网站(https://pytorch.org/)给的方法进行安装,根据自己的系统环境及相应python,CUDA版本运行相应的命令进行安装。如果电脑中只有python3,这里的pip3可以直接就用pip代替。
conda install pytorch torchvision cudatoolkit=10.1 -c pytorch
#遇问题 有关proxy
#解决方案: 在 .bashrc 中添加: export all_proxy="socks5://127.0.0.1:1080"
#cudatoolkit pkgs/main/linux-64::cudatoolkit-10.1.243-h6bb024c_0
# ninja pkgs/main/linux-64::ninja-1.9.0-py37hfd86e86_0
# pytorch pytorch/linux-64::pytorch-1.3.1-py3.7_cuda10.1.243_cudnn7.6.3_0
# torchvision pytorch/linux-64::torchvision-0.4.2-py37_cu101
#方式二: https://download.pytorch.org/whl/torch_stable.html
# 直接下载torch的whl文件,通过pip install (路径+whl文件名)
# 可以下载到本地 anaconda\install\Lib\site-packages路径下,或者在线下载安装
caffe 安装
sudo apt install caffe-cuda
sudo apt build-dep caffe-cuda # dependencies for CUDA version
sudo vim /etc/apt/sources.list #将deb-src 注释掉
#遇到问题 dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
#Errors were encountered while processing:
# /var/cache/apt/archives/nvidia-cuda-dev_9.1.85-3ubuntu1_amd64.deb
#sudo dpkg -i --force-overwrite /var/cache/apt/archives/nvidia-418_418.39-0ubuntu1_amd64.deb
#sudo apt --fix-broken install
服务管理
sudo systemctl start application.service #同 systemctl start application ,系统默认查找application.service stop, restart,reload
sudo systemctl enable/disable application.service #start a service at boot create a symbolic link from the system’s copy of the service file (usually in /lib/systemd/system or /etc/systemd/system) into the location on disk where systemd looks for autostart files (usually /etc/systemd/system/some_target.target.wants
systemctl status application.service #查看服务状态
systemctl list-units # list all of the units that systemd currently has active
systemctl list-dependencies application.service #查找关系依赖树
搜狗输入法
sudo apt-get remove ibus
sudo apt-get purge ibus #purge
sudo apt-get remove indicator-keyboard
sudo apt install fcitx-table-wbpy fcitx-config-gtk
im-config -n fcitx
选择系统设置语言 https://pinyin.sogou.com/linux/
sudo apt-get install -f
fcitx-config-gtk3
fcitx设置 >>附加组件>>勾选高级 >>取消经典界面
Configure>> Addon >>Advanced>>Classic,sogouyun
#重启 把sogoupinyin放在第二个
#只用sogou 输入法一种就行了
#搜狗云输入的锅,在fcitx配置里把搜狗云拼音这个选项去掉就可以很完美的解决这问题了 解决占cpu
#中文输入时没有汉字提示时下载一个 皮肤 ,用搜狗软件打开就行可
#https://pinyin.sogou.com/skins/detail/view/info/588600?rf=cate_31_sign&tf=p
多线程下载软件源:
sudo add-apt-repository ppa:apt-fast/stable
sudo apt-get update
JDK
sudo apt install openjdk-11-jdk
VSCODE
格式化代码
vs code格式化代码的快捷键如下:(来源于这里) On Windows Shift + Alt + F. On Mac Shift + Option + F. On Ubuntu Ctrl + Shift + I.
常用插件
- Beautify
- TODO Highlight
- Code Spell Checker
- IntelliSense for CSS class names in HTML
删除多余空行 全局替换 ^\s*(?=\r?$)\n Alt+R 正则表达式
sudo apt-get install ubuntu-make # 像这种开发软件去官网下载安装包
#查看版本
code --version
code #运行vscode
#Ctrl+Shift+P打开命令面板
#c_cpp_properties.json 该文件用于指定一般的编译环境,包括头文件路径,编译器的路径等。通过 Ctrl + Shift + p 打开命令行,键入关键字 "C++",在下拉菜单中选择 "C/C++ Edit configuration",系统即自动在 .vscode 目录下创建 c_cpp_properties.json 文件,供用户进行编译方面的环境配置。
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
#build.json 该文件用于指定程序的编译规则,即如何将源文件编译为可执行程序。通过 Ctrl + Shift + p 打开命令行,键入关键字 "task",并在下拉菜单中选择 Tasks: Configure Default Build Task -> Create tassk.json file from template -> Others ,系统即自动在 .vscode 目录下创建 build.json 文件,供用户设置具体的编译规则
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "echo",
"type": "shell",
"command": "g++", //编译时执行的程序
"args": ["-g", "-o", "test", "test1.c"], //传递给 command 的参数
"problemMatcher": [
"$gcc"
]
}
]
}
# Ctrl+Shift+p 打开命令行,选择 Tasks:Run Build Task 运行上述编译过程
#launch.json 该文件主要与程序的调试相关。用户可通过 Ctrl+Shift+p 打开命令行,键入关键字 "launch",选择 "Debug:Open launch.json" -> "C++(GDB/LLDB)",即可打开调试的配置文件 launch.json。在 VSCode 中,用户按 F5 即可进入调试模式,上述 launch.json 文件即设置在调试时的基本内容和要求。
indicator-sysmonitor
一款可以监视 CPU 占用率、 CPU 温度、内存占用率、网速等系统信息的小软件,在桌面最上方进行显示。Top 的图形化命令
# sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor
sudo apt-get update
sudo apt-get install indicator-sysmonitor
GDebi
#若用 Ubuntu 自带的软件中心安装 deb 格式的文件不仅经常会崩溃而且会遇到各种各样的依赖问题。通过deb文件安装软件优选
sudo apt-get install gdebi
Marp
用 Markdown 语法来制作 PPT,高效快速简洁实用,尤其是支持 LaTeX 语法,非常方便编辑大量的数学公式,值得推荐,官网有 deb 文件,下载后直接安装即可。
新立得软件管理
sudo apt-get install synaptic # 全面高效地管理各种软件和依赖。
Tim
Tim 安装 去官网 下载linux QQ 但qq上没有我的设备
https://im.qq.com/linuxqq/download.html
https://github.com/wszqkzqk/deepin-wine-ubuntu/releases #wine的一个版本
https://www.lulinux.com/archives/1319 #deepin-wine Tim安装教程
Winehq:https://wiki.winehq.org/Ubuntu_zhcn 学习如何使用 回去学习下winehq使用教程https://wiki.winehq.org/Wine_User%27s_Guide
Usage: wine PROGRAM [ARGUMENTS…] Run the specified program
wine –help Display this help and exit
wine –version Output version information and exit
运行方式1:cd ‘.wine/drive_c/Games/Tron’
wine tron.exe
运行方式2:wine start ‘C:\Games\Tron\tron.exe’
wine start “C:\Games\Tron\tron.exe”
wine start /unix “$HOME/installers/TronSetup.exe”
wine quake.exe -map e1m1 #带参数
wine start whatever.msi
wine control
wine uninstaller
mega网盘安装
https://mega.nz/sync 去官网安装 需要联网
V2Ray 安装
#然后编辑`/etc/v2ray/config.json`文件
service v2ray stop
service v2ray start
service v2ray status
#https://github.com/FelisCatus/SwitchyOmega/wiki/GFWList
$# 表示执行脚本传入参数的个数
$* 表示执行脚本传入参数列表
$$ 表示进程id
$@表示执行脚本传入所有参数
$0 表示执行脚本名称
$1 表示第一个参数
$2 表示第二个参数
$? 表示脚本执行状态0正常,其他表示有错误
#提取文件到某个位置函数
#获取系统本版/检查版本更新 getVersion()/checkUpdate()
#检查系统架构 SysArch()
#获得系统 install update 指令 'command -v apt-get' 判断系统是否有apt-get 指令
#prompt 颜色设置 colorEcho()
#下载文件 downloadv2ray()
# echo $VER | head -n 1 | cut -d " " -f2`
#关闭或启动软件 stopV2ray() startV2ray() 通过检查systemctl/service 命令
#copy 文件 copyFile()
#添加执行权限 makeExecutable()
# help() 帮助提示框
installInitScript(){
if [[ -n "${SYSTEMCTL_CMD}" ]];then
if [[ ! -f "/etc/systemd/system/v2ray.service" ]]; then
if [[ ! -f "/lib/systemd/system/v2ray.service" ]]; then
cp "${VSRC_ROOT}/systemd/v2ray.service" "/etc/systemd/system/"
systemctl enable v2ray.service
fi
fi
return
elif [[ -n "${SERVICE_CMD}" ]] && [[ ! -f "/etc/init.d/v2ray" ]]; then
installSoftware "daemon" || return $?
cp "${VSRC_ROOT}/systemv/v2ray" "/etc/init.d/v2ray"
chmod +x "/etc/init.d/v2ray"
update-rc.d v2ray defaults
fi
return
}
sed -i "s/10086/${PORT}/g" "/etc/v2ray/config.json" #学习这个指令
downloadV2Ray || return $?
installV2Ray() #包括下载到那个目录,copy了那些文件,如何根据配置文件进行配置的
remove() {# 卸载停止服务,把安转时写入的文件全部删除
/etc/systemd/system/v2ray.service
/usr/bin/v2ray
/lib/systemd/system/v2ray.service
/etc/init.d/v2ray
}
修改github DNS
#https://www.linuxidc.com/Linux/2019-05/158461.htm
#github
219.76.4.4 github-cloud.s3.amazonaws.com
192.30.253.112 github.com
151.101.185.194 github.global.ssl.fastly.net
ldd@ldd:~/v2ray$ sudo vim /etc/hosts
ldd@ldd:~/v2ray$ sudo /etc/init.d/networking restart
WPS 去官网下载
#http://www.wps.cn/product/wpslinux
sudo dpkg -i wps-office_10.1.0.6757_amd64.deb
IDEA下载
Teamview deb 安装
proxyee-down命令行安装 百度云下载神器
docky 桌面工具
sudo apt-get install docky
sudo apt-get install gnome-tweak-tool
sudo apt-get install gnome-shell-extensions
sudo apt-get install gnome-shell-extension-dashtodock
sudo apt-get install gnome-shell-extension-autohidetopbar
#也可以在Ubuntu软件中直接搜索hide top bar
sudo apt-get remove gnome-shell-extension-autohidetopbar #卸载
#快捷键设置
gnome-screenshot -ac # 也具有qq截图到快捷键功能
#在打开——系统设置——>键盘——快捷键——自定义快捷键,然后输入名字和上边工具的命令
Opencv
#python 包
pip uninstall opencv-python
pip install opencv-contrib-python
#opencv4. 源码编译安装, 也可以直接编译Android 依赖库
#https://www.pluvet.com/archives/223.html 安装教程
sudo add-apt-repository “deb http://security.ubuntu.com/ubuntu xenial-security main”
sudo apt update
sudo apt install libjasper1 libjasper-dev
sudo apt-fast install build-essential cmake libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
cmake ..
make -j4
sudo make install
Python 命令转换
pip 切换镜像 最终写入文件 /home/ldd/.config/pip/pip.conf
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
方式一:系统默认一个版本,在另装一个版本,通过软连接
# 以后使用anaconda
#查看当前默认Python版本
python --version
#查看Python所在
which is python
which is python3
#Python下载的库可以查看这里。/usr/local/lib/
#显示Python代替版本信息
update-alternatives --list python
#设置 /usr/bin/python3.5 设置的优先级为2 优先级越高越大
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2
#再次显示Python代替版本信息
update-alternatives --remove python /usr/bin/python2.7
#切换版本
sudo update-alternatives --config python
sudo apt-get install python3-pip # #安装Python3对应的pip3
sudo pip3 install --upgrade pip #推荐在管理员模式下更新
sudo apt-get install python-pip #安装Python2对应的pip
#Pip 安装的库会放在这个目录下面:python2.7/site-packages;
#pip3 新安装的库会放在这个目录下面:python3.6/site-packages;
#参考https://www.cnblogs.com/carle-09/p/9907274.html
#errorPermission denied: '/usr/local/lib/python3.6/dist-packages/cycler.py' Consider using the `--user` option or check the permissions.
pip3 install --user matplotlib
#The 'pip==9.0.3' distribution was not found and is required by the application
sudo easy_install pip==9.0.3 #解决
方式二:安装anaconda,然后建立基于不同python版本的conda环境
方式三:建立虚拟机virtualenv,然后建立基于不同python版本的虚拟环境
MySQL 安装
sudo apt-get install mysql-server
sudo mysql_secure_installation #设置密码 liudongdong
sudo mysql #可以直接登录
sudo systemctl start mysql
.Net core 安装
mssql-server安装
sudo apt-fast install libodbc1 unixodbc msodbcsql mssql-tools unixodbc-dev
NVIDIA显卡驱动 cuda
#驱动安装
sudo ubuntu-drivers devices 查看系统支持的显卡设备并下载
#**系统设置** > **细节**窗口,你会发现Ubuntu正在使用Nvidia显卡。
lspci -k | grep -A 2 -i "VGA"
software-properties-gtk
nvidia-settings #打开nvidia 设置软件页面
ubuntu-drivers devices #推荐显卡和驱动
sudo ubuntu-drivers autoinstall #显示推荐的驱动
sudo apt-get update
apt search nvidia-driver-418
lshw -C video #查看设备
lspci | grep -i nvidia #verify you have a cuda-Capble GPU
#查看当前NVIDIA驱动版本
sudo dpkg --list | grep nvidia-*
#查看本机GPU
uname -r #current running kernel
sudo apt-get install linux-headers-$(uname -r) # the kernel headers and development packages
gcc --version #是否安装gcc
#disable Nouveau 如果不适用nvida 驱动时需要改回
lsmod | grep nouveau #如果有输出则需要关闭
#创建文件 vim /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0
#then regenerate the kernel
sudo update-initramfs -u
#cuda 有俩中安装方式
# 1: distribution-specific packages(RPM,Deb packages) recommended
# 2: distribute-independent package(runfile package) working across a wider set of linux distribution ,but doesn't update the native package management system
#download the nvidia toolkit
# http://develop.nvidia.com/cuda-downloads 包含 cuda 驱动和一些工具包括库,应用程序,示例程序等
#校验下载是否正确
md5sum filename
#具体安装下载时有说明
#下载其他版本冲突情况看下表:
#卸载分俩种情况
# 1: 卸载通过 runfile 下载
sudo /usr/local/cuda-x.y/bin/uninstall_cuda_x.y.pl
# 卸载通过 runfile 下载的驱动
sudo /usr/bin/nvidia-uninstall
# 2: 卸载通过deb/RPM 包下载的软件
sudo apt-get --purge remove <package_name> # Ubuntu
#或者To remove CUDA Toolkit:
$ sudo apt-get --purge remove "*cublas*" "cuda*"
#To remove NVIDIA Drivers:
$ sudo apt-get --purge remove "*nvidia*"
#download the cuda toolkit packages https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type=deblocal
#安装cuda10.1
sudo dpkg -i cuda-repo-ubuntu1804-10-1-local-10.1.168-418.67_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub #本地文件,里面是一些NVidia deb安装包
sudo apt-get update
sudo apt-get install cuda
nvidia-smi #查看NVIDIA 相关信息 ,这里是选择NVIDIA驱动才会显示
#安装cuda toolkit 这和cuda 驱动没有关系
#cudnn 在/usr/local/目录下 ; cuda_toolkit 在/usr/local/cuda-版本号
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda #下载更新cuda 和driven
#这个步操作后,会把之前的的驱动改为418 ,这里显示驱动不匹配,把驱动删除,然后重新下载驱动,问题解决, 但是后期会不会存在问题不清楚 ,cuda10.1 对内核的要求不清楚,使用5.0.0-35 内核的,但好像不推荐
#驱动匹配问题解决方法2:
ls mod | grep nvidia
sudo rmmod nvidia_uvm
sudo rmmod nvidia_modeset
sudo rmmod nvidia
sudo apt install cuda-drivers
#Reboot the system to load the NVIDIA drivers.
#Set up the development environment by modifying the PATH and LD_LIBRARY_PATH variables:
#cuda 环境变量
$ export PATH=/usr/local/cuda-10.2/bin${PATH:+:${PATH}}
$ export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
#Install a writable copy of the samples then build and run the nbody sample: 每一个toolkit 都有一个sample可以测试是够安装好
$ cuda-install-samples-10.2.sh ~
$ cd ~/NVIDIA_CUDA-10.2_Samples/5_Simulations/nbody
$ make
$ ./nbody
#运行效果如下图所示
#ubuntu cudnn 安装教程 https://developer.nvidia.com/rdp/cudnn-download cudnn其实是一些加速CUDA性能的库,首先按照解压放到CUDA的相应路径中
然后把其中的lib64关联到环境变量当中
#将三个deb文件都下载下同时安装,否则会报错
sudo dpkg -i libcudnn7*.deb
网上一个脚本
# WARNING: These steps seem to not work anymore!
#!/bin/bash
# Purge existign CUDA first
sudo apt --purge remove "cublas*" "cuda*"
sudo apt --purge remove "nvidia*"
# Install CUDA Toolkit 10
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub && sudo apt update
sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
sudo apt update
sudo apt install -y cuda
# Install CuDNN 7 and NCCL 2
wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo dpkg -i nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt update
sudo apt install -y libcudnn7 libcudnn7-dev libnccl2 libc-ares-dev
sudo apt autoremove
sudo apt upgrade
# Link libraries to standard locations
sudo mkdir -p /usr/local/cuda-10.0/nccl/lib
sudo ln -s /usr/lib/x86_64-linux-gnu/libnccl.so.2 /usr/local/cuda/nccl/lib/
sudo ln -s /usr/lib/x86_64-linux-gnu/libcudnn.so.7 /usr/local/cuda-10.0/lib64/
echo 'If everything worked fine, reboot now.'
- window上查看cuda版本
nvcc --version #使用命令
#进入相应的目录 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA
#通过Nviadia 软件查看,这里俩个版本不一致,不清楚有没有问题?
内核相关的
ctrl+alt+F1–F6 切换到相应的终端
file ‘which update-initramfs’ 学会这个命令
- 编译内核的最后一步执行make install时会调用update-initramfs,update-initramfs继而调用mkinitramfs生成initrd.img. 一个往临时initrd目录copy文件的繁琐过程,mkinitramfs则用脚本替代了手工操作
- 1).在临时initrd目录下构建FHS规定的文件系统;2).按/etc/initramfs-tools/module和/etc/modules文件的配置,往lib/modules/目录拷贝模块,同时生成模块依赖文件modules.dep,以后内核启动后会从initramfs中(initrd.img被解压到内存中)按模块依赖关系modprobe模块;3).拷贝/etc/initramfs-tools/scripts和/usr/share/initramfs-tools/scripts下的配置文件到conf/目录下,以后内核启动,创建第一个进程init(initrd.img根目录下init.sh文件)会从conf/*读取配置,按一定的顺序加载模块/执行程序;4).模块的加载离不开modprobe工具集,因此需要拷贝modprobe工具集及其他工具到initrd目录结构下,同时解决这些工具的依赖关系(依赖的so文件的路径);5).所有步骤完成,调用cpio和gzip工具打包压缩临时initrd目录结构。
nouveau(英语:/nuːˈvoʊ/) 是一个自由开放源代码CPU驱动程序,是为AMD的CPU所编写,也可用于属于系统芯片的高通系列.
Nouveau的内核模块应该在系统启动时就已自动加载,如果没有的话:
- 确保你的内核参数中没有
nomodeset
或者vga=
, 因为Nouveau需要内核模式设置。 - 另外,确保你没有在 modprobe 配置文件
/etc/modprobe.d/
或/usr/lib/modprobe.d/
中屏蔽 Nouveau。 - 检查 dmesg 中有没有 opcode 错误,如果有的话,将
nouveau.config=NvBios=PRAMIN
加入 内核参数禁止模块卸载 - Nouveau 驱动依赖Kernel mode setting (KMS)。当系统启动时,KMS 模块会在其它模块之后启用,所以显示的分辨率发生改变。
- 确保你的内核参数中没有
dmesg 命令:用来显示开机信息, kernel会将开机信息存储在ring buffer中。开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log/dmesg
1) dmesg 是一个显示内核缓冲区系统控制信息的工具;比如系统在启动时的信息会写到/var/log/
2) dmesg 命令显示Linux内核的环形缓冲区信息,我们可以从中获得诸如系统架构、CPU、挂载的硬件,RAM等多个运行级别的大量的系统信息。当计算机启动时,系统内核(操作系统的核心部分)将会被加载到内存中。在加载的过程中会显示很多的信息,在这些信息中我们可以看到内核检测硬件设备
3) dmesg 命令设备故障的诊断是非常重要的。在dmesg命令的帮助下进行硬件的连接或断开连接操作时,我们可以看到硬件的检测或者断开连接的信息
watch : execute a program periodically, showing output fullscreen watch “dmesg | tail -20”
rmmod: 可删除不需要的模块。Linux操作系统的核心具有模块化的特性,因此在编译核心时,不需要把全部的功能都放入核心。
lsmod: 显示内核中的模块作用同 cat /proc/devices
modinfo 能查看模块的信息,通过查看模块信息来判定这个模块的用途;
insmod: 向linux 内核中加载摸块
modprobe :向Linux内核中加载摸块,能够处理 module 载入的相依问题. modprobe会检查/lib/modules/
uname -r
下的所有模块,除了/etc/modprobe.conf配置文件和/etc/modprobe.d目录以外。所有/etc/modprobe.d/arch/目录下的文件将被忽略。unable to correct problems,you have held broken package
sudo apt install -f sudo aptitude install
#get the detail information sudo apt update | sudo apt upgrade sudo dpkg --configure -a sudo dpkg --get-selection | grep hold #get actual held packages dpkg --get-selections | grep linux-image #产看内核文件有哪些
Grub2介绍
- /boot/grub/grub.cfg 文件
- 官方文件只说/boot/grub/grub.cfg不要手工修改,这个文件是运行 update-grub自动生成的。要修改配置文件的只要打开/boot/grub/grub.cfg文件,找到想修改的地方,然后根据注释找到相应的 /etc/default/grub或/etc/grub.d/ (folder)进行修改。
- grub.cfg文件中主要包含两个部分,一部分是 各个启动项的定义,第二部分是启动界面的设置。你可以直接用gedit打开该文件看其中的内容。
- /etc/grub.d/ 文件夹
- 定义各个启动项,其中的文件代表了一个或多个启动项,命名规范都是”两个数字名称”,前面的两位数字确定这个或这多个启动项在启动界面的位置, 默认的 “00“是预留给”00_header”的,”10_是预留给当前系统内核的,20_是预留给第三方程序的,除了这些你都可以使用,增加自己的,比如 05_ , 15_,数字越小越前面。
- 执行前面说的”update-grub”或者update- grub2”命令之后,这个文件夹中的文件就是用于生成 grub.cfg 中启动项的定义的
- /etc/default/grub 文件
- 启动界面的配置,比如默认的启动项,等待用户选择启动项的时间等。当执行前面说的”update-grub”或者update-grub2”命令之后,这个文件的内容就 用于生成 grub.cfg 中启动界面的设置。
- /boot/grub/grub.cfg 文件
内核降级
linux-image-: 内核镜像
linux-image-extra-: 额外的内核模块
linux-headers-: 内核头文件
https://www.kernel.org/ 查看稳定的内核
官网: https://kernel.ubuntu.com/~kernel-ppa/mainline/ 以及相应内核安装位置
安装4.19
sudo dpkg -i *.deb
#查看可用的内核
apt-cache search linux-image
#备份软件源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
#添加一个源
sudo vim /etc/apt/sources.list
deb http://security.ubuntu.com/ubuntu trusty-security main
sudo apt update
#查看所有内核
dpkg --get-selections| grep linux
#安装指定版本内核
sudo apt install 内核名称
dpkg -l | grep 内核名称 #查看是否安装成功
#编辑grub 文件
GRUB_DEFAULT=0
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 内核名称<5.0.0-36-generic>"
Ubuntu,with Linux 5.3.0-25-generic
#更新grub 引导
sudo update-grub
sudo reboot
uname -r #查看当前版本是否安装正确
#卸载内核
sudo apt remove --purge 内核名称
sudo dpkg --purge linux-image-4.19.0-041900-generic linux-image-unsigned-4.19.0-041900-generic
sudo dpkg -P 内核名称 #通过deb包暗装的
#关闭启动内核自动更新
sudo apt-mark hold linux-image-generic linux-headers-generic
sudo apt-mark unhold linux-image-generic linux-headers-generic
使用指定版本内核 /boot 文件是内核相关的信息
grep menuentry /boot/grub/grub.cfg
例如文件如下:
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
menuentry_id_option=""
export menuentry_id_option
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-5bce3795-da96-4c6f-bed2-67d37185a77d' {
submenu 'Ubuntu 高级选项' $menuentry_id_option 'gnulinux-advanced-5bce3795-da96-4c6f-bed2-67d37185a77d' {
menuentry 'Ubuntu,Linux 4.8.0-26-lowlatency' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-45-lowlatency-advanced-5bce3795-da96-4c6f-bed2-67d37185a77d' {
menuentry 'Ubuntu, with Linux 4.8.0-26-lowlatency (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-45-lowlatency-init-upstart-5bce3795-da96-4c6f-bed2-67d37185a77d' {
menuentry 'Ubuntu, with Linux 4.8.0-26-lowlatency (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-45-lowlatency-recovery-5bce3795-da96-4c6f-bed2-67d37185a77d' {
menuentry 'Ubuntu,Linux 4.8.0-26-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-45-generic-advanced-5bce3795-da96-4c6f-bed2-67d37185a77d' {
menuentry 'Ubuntu, with Linux 4.8.0-26-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-45-generic-init-upstart-5bce3795-da96-4c6f-bed2-67d37185a77d' {
menuentry 'Ubuntu, with Linux 4.8.0-26-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-45-generic-recovery-5bce3795-da96-4c6f-bed2-67d37185a77d' {
menuentry 'Ubuntu,Linux 4.4.0-21-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-21-generic-advanced-5bce3795-da96-4c6f-bed2-67d37185a77d' {
menuentry 'Ubuntu, with Linux 4.4.0-21-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-21-generic-init-upstart-5bce3795-da96-4c6f-bed2-67d37185a77d' {
menuentry 'Ubuntu, with Linux 4.4.0-21-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-21-generic-recovery-5bce3795-da96-4c6f-bed2-67d37185a77d' {
menuentry 'Memory test (memtest86+)' {
menuentry 'Memory test (memtest86+, serial console 115200)' {
menuentry 代表一个内核, 从0开始记数字: 例如如果使用以4.4.0-21内核版本启动,则将文件/etc/default/grub中
GRUB_DEFAULT=0
改为
GRUB_DEFAULT=6
或者改为
GRUB_DEFAULT=”Ubuntu,Linux 4.4.0-21-generic“
- sudo update-grub 然后重启执行uname -r 查看系统内核
- Nouveau unknown chipset at install 显卡驱动问题
sudo apt update
sudo apt upgrade
sudo ubuntu-drivers devices
sudo apt install nvidia-xxx
#如果没有NVIDIA驱动的话,
文件
/boot 文件: 系统内核文件 ,启动管理程序grub 的目录
- Initrd 文件,系统启动摸块的只要来源,系统启动所需加载的虚拟磁盘
- System.map 系统内核中的变量对应表
- vmlinuz 是启动过程系统实际所用的内核
- grub目录是启动管理程序的
- grub.conf 文件 从哪个内核进入,启动时间等
- kernel kernel主要负责的是北桥、南桥、CPU及内存,可见它们都是整个主机最重要的硬件核心部分,kernel如果处了问题,系统肯定无法启动起来。
- kernel、initrd和system module是依次加载的。initrd包含一部分内核模块,主要是一些关键的外部硬件,如SATA、SCSI和USB等外设。它如果失败当然也会影响系统启动。而system module这些系统中的模块,是与支持和启动无很大关系的硬件有关,如果没有这些硬件设备的支持,系统也可以启动完成,只是存在功能上的缺失,如声卡、网卡、显卡等。这些系统模块也可以在启动后,以modprobe
/lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件
/sbin 系统管理命令,这里存放的是系统管理员使用的管理程序
/bin 二进制可执行命令
/dev 设备特殊文件
/etc 系统管理和配置文件
/etc/rc.d 启动的配置文件和脚本/lost+found 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里
/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含:
/usr/x11r6 存放x window的目录
/usr/bin 众多的应用程序
/usr/sbin 超级用户的一些管理程序
/usr/include linux下开发和编译应用程序所需要的头文件
/usr/lib 常用的动态链接库和软件包的配置文件
/usr/doc linux文档 /usr/man 帮助文档 /usr/info
/usr/src 源代码,linux内核的源代码就放在/usr/src/linux里
/usr/local/bin 本地增加的命令
/usr/local/lib 本地增加的库/var 包含系统一般运行时要改变的数据。通常这些数据所在的目录的大小是要经常变化
或扩充的。原来/ v a r目录中有些内容是在/ u s r中的,但为了保持/ u s r目录的相对稳定,就把那
些需要经常改变的目录放到/ v a r中了。每个系统是特定的,即不通过网络与其他计算机共享。- /var/log:各种程序的日志( l o g )文件,尤其是login (/var/log/wtmp log纪录所有到系统的登录和注
销) 和syslog (/var/log/messages 纪录存储所有核心和系统程序信息)。/var/log 里的文件经常不
确定地增长,应该定期清除。
/proc文件系统
/proc 文件系统是一个伪的文件系统,就是说它是一个实际上不存在的目录,因而这是一
个非常特殊的目录。它并不存在于某个磁盘上,而是由核心在内存中产生。这个目录用于提
供关于系统的信息。下面说明一些最重要的文件和目录(/proc 文件系统在proc man页中有更详
细的说明)。
\1. /proc/x
关于进程x的信息目录,这一x是这一进程的标识号。每个进程在/proc 下有一个名为自
己进程号的目录。
\2. /proc/cpuinfo
存放处理器( c p u )的信息,如c p u的类型、制造商、型号和性能等。
\3. /proc/devices
当前运行的核心配置的设备驱动的列表。
\4. /proc/dma
显示当前使用的d m a通道。
\5. /proc/filesystems
核心配置的文件系统信息。
\6. /proc/interrupts
显示被占用的中断信息和占用者的信息,以及被占用的数量。
\7. /proc/ioports
当前使用的i / o端口。
\8. /proc/kcore
系统物理内存映像。与物理内存大小完全一样,然而实际上没有占用这么多内存;它仅
仅是在程序访问它时才被创建。(注意:除非你把它拷贝到什么地方,否则/proc 下没有任何
东西占用任何磁盘空间。)
\9. /proc/kmsg
核心输出的消息。也会被送到s y s l o g。
\10. /proc/ksyms
核心符号表。
\11. /proc/loadavg
系统“平均负载”; 3个没有意义的指示器指出系统当前的工作量。
\12. /proc/meminfo
各种存储器使用信息,包括物理内存和交换分区( s w a p )。
\13. /proc/modules
存放当前加载了哪些核心模块信息。
\14. /proc/net
网络协议状态信息。
\15. /proc/self
存放到查看/proc 的程序的进程目录的符号连接。当2个进程查看/proc 时,这将会是不同
的连接。这主要便于程序得到它自己的进程目录。
\16. /proc/stat
系统的不同状态,例如,系统启动后页面发生错误的次数。
\17. /proc/uptime
系统启动的时间长度。
\18. /proc/version
核心版本。- /var/log:各种程序的日志( l o g )文件,尤其是login (/var/log/wtmp log纪录所有到系统的登录和注
ACPI在BIOS和其他系统硬件中被实现,它就可以由操作系统所调用(触发)。
ACPI可以实现的功能包括:
系统电源管理(System power management)
设备电源管理(Device power management)
处理器电源管理(Processor power management)
设备和处理器性能管理(Device and processor performance management)
配置/即插即用(Configuration/Plug and Play)
系统事件(System Event)
电池管理(Battery management)
温度管理(Thermal management)
嵌入式控制器(Embedded Controller)
SMBus控制器(SMBus Controller