【Ubuntu】Ubuntu16.04 使用心得

【Ubuntu】Ubuntu16.04 使用心得

  • 基本操作
    • 生成文件
    • 删除文件
    • 查找文件
    • 拷贝文件
    • 显示当前路径中所有文件,并且用树状显示
    • 移动文件夹
    • 检测磁盘空间
    • 解压
    • 清理文件
    • 建立软链接
    • 端口被占用
  • 安装软件常见问题
    • dpkg: 处理软件包 sogoupinyin (--install)时出错:依赖关系问题 - 仍未被配置
    • 有 3 个软件包未被升级
    • 软件源和解决依赖关系
  • 了解源码安装
  • 安装常用命令
  • apt更换国内源
  • Git笔记
    • Git基本操作
    • 远程仓库
  • 权限问题
  • E: 仓库没有Release文件
  • 卷var 0字节空间
  • 笔记软件推荐
  • LICENSE机制了解
  • 显卡驱动安装指令
  • 显卡驱动适应内核版本
    • 显示内核版本

第一次使用Ubuntu16.04系统,也是第一次编写属于自己的一篇博客,在这篇博客中,我记录了自己对Ubuntu系统的一些学习了解,以及一些问题的解决方案,本人才疏学浅,如有错误之处还请大家包涵指出。

基本操作

生成文件

touch readme.txt

删除文件

rm -i/f/r
rmdir

查找文件

find ./ -name test.sh

拷贝文件

cp -a/f/i/r/v

显示当前路径中所有文件,并且用树状显示

tree

移动文件夹

mv 

检测磁盘空间

df -a/m/t/T

解压

# .tar 文件
# 仅打包,并非压缩
tar -xvf FileName.tar         # 解包
tar -cvf FileName.tar DirName # 将DirName和其下所有文件(夹)打包

# .gz
gunzip FileName.gz  # 解压1
gzip -d FileName.gz # 解压2
gzip FileName       # 压缩,只能压缩文件

#.tar.gz文件、 .tgz文件
# .tar.gz 和 .tgz
tar -zxvf FileName.tar.gz               # 解压
tar -zcvf FileName.tar.gz DirName       # 将DirName和其下所有文件(夹)压缩
tar -C DesDirName -zxvf FileName.tar.gz # 解压到目标路径

#.zip文件
# 感觉.zip占用空间比.tar.gz大
unzip FileName.zip          # 解压
zip FileName.zip DirName    # 将DirName本身压缩
zip -r FileName.zip DirName # 压缩,递归处理,将指定目录下的所有文件和子目录一并压缩

#.rar文件
# mac和linux并没有自带rar,需要去下载
rar x FileName.rar      # 解压
rar a FileName.rar DirName # 压缩

清理文件

选择要清理的文件夹

 $ cd /var/cache/apt/archives 
 $ sudo apt-get clean

再次查看的时候,*.deb文件都不存在了

建立软链接

在某个空间大的分区建立一个目录,然后把/var/cache/apt/archives换成指向那个目录的软链接

mkdir -p "$HOME/debs/partial"
sudo rm -rf /var/cache/apt/archives
sudo ln -s "$HOME/debs" /var/cache/apt/archives

命令解释:

ln -s #原目录 映射目录
#eg:比如我的移动硬盘是挂载在/media/lgw/NEWSMY这个目录下,我想将它映射到home目录则:
ln -s /media/lgw/NEWSMY ~
#这样我的home目录下就会出现一个叫NEWSMY的文件夹映射到了我的移动硬盘
#删除软链接:
rm -rf 映射目录
#比如我这里应该是
rm -rf ~/NWESMY

原文链接

原文链接

https://blog.csdn.net/songbinxu/article/details/80435665
https://blog.csdn.net/hello_new_life/article/details/75099249?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
https://blog.csdn.net/Asong_6/article/details/93413912?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

端口被占用

Xshell7在与服务器Ubuntu16.04进行socket通信,当重复运行时服务器端显示Address already in use,经过查询,

#显示8003端口进程
netstat -apn|grep 8003
#杀死进程ID
kill -9 8622

重新运行发现端口可以使用


安装软件常见问题

 dpkg: 依赖关系问题使得 sogoupinyin 的配置工作不能继续:
 sogoupinyin 依赖于 libqtwebkit4;然而:
  未安装软件包 libqtwebkit4。
 sogoupinyin 依赖于 fonts-droid | fonts-droid-fallback;然而:
  未安装软件包 fonts-droid。
  未安装软件包 fonts-droid-fallback。
 sogoupinyin 依赖于 libopencc2 | libopencc1;然而:
  未安装软件包 libopencc2。
  未安装软件包 libopencc1。

dpkg: 处理软件包 sogoupinyin (–install)时出错:依赖关系问题 - 仍未被配置

一看就知道是依赖包存在问题 解决办法如下:

方法一
移除sogou输入法, 由于其安装不完整

 sudo apt remove sogoupinyin

安装fcitx

sudo apt install libopencc1 fcitx-libs fcitx-libs-qt fonts-droid-fallback

安装缺少的软件包

sudo apt install libopencc1 libqtwebkit4 fcitx-libs

再安装

sudo dpkg -i sogoupinyin_2.2.0.0108_amd64.deb

方法二
解决依赖关系

sudo apt-get -f install

有 3 个软件包未被升级

sudo apt-get dist-upgrade

下列软件包是自动安装的并且现在不需要了:snapd-login-service
使用sudo apt autoremove来卸载它(它们)。

sudo apt autoremove

软件源和解决依赖关系

#备份
sudo cp /etc/apt/sources.list /etc/apt/sources_init.list
#更改源
sudo gedit /etc/sources.list

sudo apt-get update  #更新软件列表
sudo apt-get upgrade #下载安装

#更新了源之后就可以解决依赖关系:
sudo apt-get install -f apt

sudo dpkg -i cocomusic_2.0.4_amd64.deb

sudo apt remove sogoupinyin

了解源码安装

./configure,make,make install,make clean的作用
参考网址一
参考网址二

  1. Tar:解压这个源码软件包。
    2.Cd:进入到这个源码包。
  2. ./configure:“configure”会在你的系统上测试存在的特性(或者bug!)然后来建立Makefile文件来完成make!
    ./configure --prefix=/软件要安装的路径.但是我们也可以直接./configure而不指定路径,通常通过从源码包编译安装的软件默认路径都是/usr/local/,编译时使用的动态链接库的路径,默认情况下编译器只会使用/lib/usr/lib这两个目录下的库文件。
    /etc/ld.so.conf:安装了其他的库,那么安装完成后就在/etc/ld.so.conf把这个库文件中的绝对路径写进去
    ldconfig:将/etc/ld.so.conf中的路径缓存到/etc/ld.so.cache中,运行一下/sbin/ldconfig
  3. Make:编译程序。make结束的时候通过一条命令来检查是否成功编译:echo $?, 输出的结果是0,那么就说明成功编译
    可能问题: gcc个版本之间存在着差异; 缺少.h文件
  4. Make install:安装文件!

make clean z作用是删除一些临时文件
有些软件要先运行make checkmake test来进行测试,这一步一般需要你有root权限

$ conda install -c  
anaconda search -t 

遇到两个Python环境冲突的情况,我一般的解决情况就是,关闭系统的Python,即将系统的Python路径从我的环境变量中删除

$ export PYTHONPATH=''

安装常用命令

执行更新:

sudo apt-get update

复损坏的软件包,尝试卸载出错的包,重新安装正确版本的:

sudo apt-get -f install

更新软件:

sudo apt-get upgrade

deb安装

sudo dpkg -i cocomusic_2.0.4_amd64.deb

卸载软件

sudo apt remove sogoupinyin

apt更换国内源

备份原来的源:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

更换源:

sudo gedit /etc/apt/sources.list

将里面文件内容全部替换成下面:

#deb包
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
##测试版源  
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main 星期四, 12. 三月 2020 06:00下午 
restricted universe multiverse
# 源码  
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
##测试版源  
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
# Canonical 合作伙伴和附加  
deb http://archive.canonical.com/ubuntu/ xenial partner
deb http://extras.ubuntu.com/ubuntu/ xenial main

执行更新:

sudo apt-get update

复损坏的软件包,尝试卸载出错的包,重新安装正确版本的:

sudo apt-get -f install

更新软件:

sudo apt-get upgrade

Git笔记

Git基本操作

创建版本库:

$ mkdir learngit
$ cd learngit
$ pwd	
/Users/michael/learngit

通过git init命令把这个目录变成Git可以管理的仓库:

$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题,比如,网页第一行可能会显示一个“?”,明明正确的程序一编译就报语法错误,等等,都是由记事本的弱智行为带来的。建议你下载Notepad++代替记事本,不但功能强大,而且免费!记得把Notepad++的默认编码设置为UTF-8 without BOM即可:

提交修改

$ git add readme.txt
$ git commit -m "wrote a readme file"

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."

提交后,用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别

$ git status
$ git diff

用HEAD表示当前版本,上一个版本就是HEAD^

上上一个版本就是HEAD两个^

当然往上100个版本写100个^

比较容易数不过来,所以写成HEAD~100。

$ git log --pretty=oneline
$ git reset --hard HEAD^

cat readme.txt#查看文本内容

如果想要回溯到前前一个版本怎么办?办法其实还是有的,只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个append GPL的commit id是1094adb…,于是就可以指定回到未来的某个版本:

$ git reset --hard 1094a

git reflog用来记录你的每一次命令

39e3ea0 HEAD@{0}: reset: moving to 39e3e
d23deec HEAD@{1}: reset: moving to HEAD^
787e108 HEAD@{2}: reset: moving to HEAD^
39e3ea0 HEAD@{3}: commit: GPL
787e108 HEAD@{4}: commit: add distributed
d23deec HEAD@{5}: commit (initial): try

git checkout -- file可以丢弃工作区的修改

git reset HEAD 可以把暂存区的修改撤销掉(unstage),重新放回工作区从版本库中删除该文件,那就用命令git rm删掉,并且git commit

$ git checkout -- test.txt

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

远程仓库

$ ssh-keygen -t rsa -C "[email protected]"
git remote add origin [email protected]:synjoker/learngit.git
$ git push -u origin master
$ git push origin master

权限问题

超级用户
有些文件因为权限问题无法编辑,打开终端输入sudo nautilus,会出现超级用户文件夹,就能编辑任何文件
显示隐藏文件
进入自己主目录,按ctrl+h.就能看见以点号开头的隐藏文件

源文链接


E: 仓库没有Release文件

sudo apt-get update无法安全的使用该源进行更新,所以默认禁用该源
原文链接


卷var 0字节空间

问题分析
用磁盘空间分析工具查看**/var/log/下kern.log 和syslog非常大**,点开都发现同样的问题,即pcie重复报错,以上报错信息使得内核日志文件和系统日志文件越来越大,那根源就是pcie的问题了。

解决方案
grub引导时加入

pci=nomsi

打开终端,修改/etc/default/grub引导文件,要有备份的好习惯

sudo cp /etc/default/grub /etc/default/grub.bak
sudo -H gedit /etc/default/grub

打开之后找到以下这句

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

然后将其改为:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pci=nomsi"

保存关闭grub文件,更新grub引导,并重启

sudo update-grub
sudo reboot

问题解决了,关机时不再会报一长串pcie错误。

对过大的日志进行删除:
新建myClearLogfile.sh文件

#!/bin/sh
cat /dev/null > /var/log/syslog
cat /dev/null > /var/adm/sylog
cat /dev/null > /var/log/wtmp
cat /dev/null > /var/log/maillog
cat /dev/null > /var/log/messages
cat /dev/null > /var/log/openwebmail.log
cat /dev/null > /var/log/maillog
cat /dev/null > /var/log/secure
cat /dev/null > /var/log/httpd/error_log
cat /dev/null > /var/log/httpd/ssl_error_log
cat /dev/null > /var/log/httpd/ssl_request_log
cat /dev/null > /var/log/httpd/ssl_access_log

然后将此文件可执行化:

chmod a+x  myClearLogfile.sh

执行命令:(一定要在root管理员下)

./myClearLogfile.sh

笔记软件推荐

NixNote
NixNote,原名Nevernote,一个专门为Linux用户提供的Evernote桌面客户端。

PPA安装命令:

sudo add-apt-repository ppa:vincent-c/nevernote
sudo apt-get update
sudo apt-get install nevernote

源码下载

Remarkable
Remarkable 可能是 Linux 上最好的 Markdown 编辑器了,它也适用于 Windows 操作系统(还在开发中)。它的确是是一个卓越且功能齐全的 Markdown 编辑器,为用户提供了一些令人激动的特性。一些卓越的特性:支持实时预览支持导出 PDF 和 HTML支持 Github Markdown 语法支持定制 CSS支持语法高亮提供键盘快捷键高可定制性和其他访问主页.
github源码

作者:0ne0ne
链接:(https://www.jianshu.com/p/5c31e66fa4cd)
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


LICENSE机制了解

软件的License文件注册机制是如何实现的?例如下面这些函数如何实现?

//设置产品密钥函数
HRESULT SetLicenseKey(LPCSTR lpcsKey);

//生成签名后的License文件函数,先调用CFileReadWrite::CreateFile,然后调用
//CDictionary::AddInfoToDic生成字典后,然后从字典中提取信息调用
//CFileReadWrite::WriteStringToFile
HRESULT CreateLicenseFile(LPCSTR lpcsPath);

//获取设备特征码函数,SN+key->MD5
HRESULT GetEsnInfo(CString& strEsn);

//License文件认证函数,此函数中先调用SetLicenseFilePath设置License文件位置
//然后调用SetProductKey,调用GetFileSectionNUM,再调用SetDictionaryNum,然后调用InitDictionary(),
//接着将读到的License信息写入字典
HRESULT VerifyLicenseFile(LPCSTR lpcsPath);

//获取License分段数目函数,取CDictionary::m_iDicCount的值
HRESULT GetSectionCount(UINT& uiNum);

//获取段中节点数目函数,调用CDictionary::GetKeyInfo
HRESULT GetKeyCount(UINT uiID, UINT& uiKeyNum);

//获取节点名称的函数,调用CDictionary::GetKeyI
 HRESULT GetKeyInfo(UINT uiID, UINT uiIndex, CString& strKey);

//获取节点信息对应的值函数,调用CDictionary::GetKeyValue
HRESULT GetKeyValue(UINT uiID, UINT uiIndex, CString& strValue);

//供生成License时调用设置License文件中段的数目,调用CDictionary::SetDictionaryNum来实现
HRESULT SetSectionCount(UINT uiCount);//此函数一并对字典进行初始化;

//设置License文件中各段中节点及其值的函数,此接口函数调用类CDictionary中的
//AddInfoToDic来实现,生成字典
HRESULT SetKeyValue(UINT uiID, LPCSTR lpcsKey, LPCSTR lpcsValue );

设置License就是要将软件和运行该软件的机器进行简单绑定CPU特征和机器MAC地址。以及MD5加密。
原文链接


显卡驱动安装指令

关闭图形界面 
sudo service lightdm stop      //这个是关闭图形界面,不执行会出错。
卸载掉原有驱动: 
sudo apt-get remove nvidia-* //若安装过其他版本或其他方式安装过驱动执行此项)
给驱动run文件赋予执行权限: 
sudo chmod  a+x NVIDIA-Linux-x86_64-440.31.run
安装 
./NVIDIA-Linux-x86_64-440.31.run -no-x-check -no-nouveau-check -no-opengl-files //只有禁用opengl这样安装才不会出现循环登陆的问题
	-no-x-check:安装驱动时关闭X服务
	-no-nouveau-check:安装驱动时禁用nouveau
	-no-opengl-files:只安装驱动文件,不安装OpenGL文件
开启图形界面
sudo service lightdm start

显卡驱动适应内核版本

方法一
显卡驱动没有更新,应该手动更新附加驱动。打开软件和更新,在设置中的附加驱动选项中把使用NVIDIA driver 现有驱动改成使用X.OrgX server驱动,关闭后再在终端输入命令:

sudo ubuntu-drivers autoinstall(需要联网)

就可以把驱动更新到与新的linux内核一致的状态了,再重启就可以了。

原文链接

方法二
手动去官网下载.run文件自己安装
卸载原先的所有驱动:

#for case1: original driver installed by apt-get:
sudo apt-get remove --purge nvidia*
 
#for case2: original driver installed by runfile:
sudo chmod +x *.run
sudo ./NVIDIA-Linux-x86_64-384.59.run --uninstall

禁用nouveau:

sudo gedit /etc/modprobe.d/blacklist.conf

在最后一行添加:

blacklist nouveau 

之后,执行命令:

sudo update-initramfs -u

电脑重启之后执行

lsmod | grep nouveau  #没有输出,即说明安装成功

显示内核版本

查看内核版本命令:

cat /proc/version

uname -a

uname -rcat /etc/issue

man uname

1.博客主要是为了记录工作、学习中遇到的问题,可能由于本人技术有限,有些不正确的地方,仅供参考。
2.博客中会转载我认为有用的博客文章,添加一些论坛或网站地址,但这些博客文章、论坛和网站上的内容和我没有关系,不代表我的意见,请网友自己多注意辨别。
3.博客中转载文章会写明来源,感谢原作者的辛苦写作,如果有异议,及时联系我处理,谢谢!
4.欢迎指出有问题的地方,我会尽快修正,谢谢!
@synjoker

你可能感兴趣的:(ubuntu)