第一次使用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。
一看就知道是依赖包存在问题 解决办法如下:
方法一
移除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
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的作用
参考网址一
参考网址二
Tar
:解压这个源码软件包。
2.Cd
:进入到这个源码包。./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
Make
:编译程序。make
结束的时候通过一条命令来检查是否成功编译:echo $?
, 输出的结果是0,那么就说明成功编译
可能问题: gcc个版本之间存在着差异; 缺少.h文件Make install
:安装文件!
make clean z
作用是删除一些临时文件
有些软件要先运行make check
或make 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
备份原来的源:
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
创建版本库:
$ 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
.就能看见以点号开头的隐藏文件
源文链接
sudo apt-get update
无法安全的使用该源进行更新,所以默认禁用该源
原文链接
问题分析
用磁盘空间分析工具查看**/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文件注册机制是如何实现的?例如下面这些函数如何实现?
//设置产品密钥函数
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