遇到过一些问题,这里整理一下。
查看系统日志(可查看操作记录) journalctl -xe
删除目录 sudo rm -r xx
删除目录极其所有文件:sudo rm -rf xx
复制目录: sudo cp -r xx yy
sudo:无法解析主机
http://blog.youkuaiyun.com/u011274209/article/details/50759772
无法获得锁 /var/lib/dpkg/lock -open
http://blog.youkuaiyun.com/zkp0601/article/details/41349253
安装软件
apt命令、dpkg命令、make install命令。一般用apt命令。
apt命令介绍
列举可用的指定软件包版本:apt-cache madison xx
列出可用的指定软件包信息:apt-cache show xx
安装指定版本的软件包:apt-get install xx=1.2
下载命令wget与curl
https://www.cnblogs.com/lsdb/p/7171779.html
http://blog.youkuaiyun.com/windeal3203/article/details/52495161
tar命令
tar仅仅打包,没有压缩。
压缩文件常见的为tar.gz或tgz,以及tar.xz等。
对于gz类型的:tar -zxvf解压 tar -zcvf压缩。
对于xz类型的:tar -Jxvf解压 tar -Jcvf压缩。
zip命令
zip -r myfile.zip ./*
将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件.
unzip -o -d /home/sunny myfile.zip
把myfile.zip文件解压到 /home/sunny/
-o:不提示的情况下覆盖文件;
-d:-d /home/sunny 指明将文件解压缩到/home/sunny目录下
下载命令wget,有时候最好-O进行命名。
curl命令,可以模拟浏览器,但是不能解析html。
也可以下载,需用-o指定文件名。
可以模拟post,如:curl -d “number=18701968170” https://www.xiaobenji.net/api/identify-code
详细可参考:https://www.cnblogs.com/linjiqin/p/5484910.html
搜索命令find,find -name filename可以在当前目录下搜索filename
find file可在当前目录下搜索file及其子文件。
find / -name filename可以在根目录下搜索。
locate filename
locate命令其实是“find -name”的另一种写法,但是要比后者快得多,发现包含字符串“filename”的文件名。
which executeable_name
查找可执行文件,根据可执行文件的文件名。
例如 which apache2 , 返回/usr/sbin/apache2
除了上面三个,还有查找指定文件中的字符串的命令:
- grep -n 字符串名字 /filepath/filename
返回包含该字符串的该行,可以是多行。且包含行数。 - sudo gedit /filepath/filename
而后,用ctrl+F 去查找相应的字符串。(这也算??)
特殊的方法: - 如果你只想看文件的前5行,可以使用head命令,如:
head -5 /etc/passwd - 如果你想查看文件的后10行,可以使用tail命令,如:
tail -20 /etc/passwd
tail -f /var/log/messages
参数-f使tail不停地去读最新的内容,这样有实时监视的效果
tail -f /var/log/messages
按Ctrl+C后,直接从脚本退出到提示符下了
其他安装软件的方法(apt软件库里没有相应版本时)
下载软件包,解压。如果是源码就用make install(configure默认时,一般在/usr/local/lib可以找到最终安装的包);如果是二进制包可以将文件转移到想要安装的目录,然后设置环境变量(以mongodb为例):
http://www.runoob.com/mongodb/mongodb-linux-install.html
配置环境变量也可以参考:
https://www.cnblogs.com/rwxwsblog/p/4557123.html
mongodb的正确安装方式应该看官网的
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
管理环境变量:
http://blog.youkuaiyun.com/haluoluo211/article/details/54313631
另一种方法是手动更新软件库(以安装node为例)。
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs(注意指定版本可以通过madison命令查看)
见链接:http://blog.youkuaiyun.com/w20101310/article/details/73135388
https://github.com/nodesource/distributions/blob/master/deb/setup_8.x
apt、pip、easy_install、python setup.py
http://blog.youkuaiyun.com/Yakumoyukarilan/article/details/51340358
http://blog.youkuaiyun.com/rona_lin/article/details/45028277
https://www.52os.net/articles/use-command-install-easy_install-and-pip.html
http://outofmemory.cn/code-snippet/7981/python-install-easy_install-on-ubuntu
注意pip3的安装是 python3-pip 而不是python-pip3,这些终端其实有提示的。
mongodb的指导,请尽量参照官网。
但是指定web界面可以借鉴菜鸟教程的:
mongod --dbpath=/var/lib/mongodb --rest
MongoDB 的 Web 界面访问端口比服务的端口多1000。
python操作mongodb:
https://www.cnblogs.com/melonjiang/p/6536876.html
easy_install fabric过程比较艰难,遇到两个问题。
No package ‘libffi’ found
https://www.cnblogs.com/rwxwsblog/p/4557123.html
error: openssl/opensslv.h: No such file or directory
需安装这个 sudo apt-get install libssl-dev
成功安装后:
fab --version
Fabric 1.14.0
Paramiko 2.4.0
sqlalchemy的使用
http://blog.youkuaiyun.com/kuangshp128/article/details/73413584
任务调度:
一般来说,一个进程下最多只1000个线程左右(不同操作系统略有区别,但数量级一致)。没开一个线程需要找1M内存。
为何很少使用C语言编写服务器脚本,这就涉及到IO密集型与计算密集型的区别,C语言最大的优势在于CPU密集型任务,如今大多数web应用都是IO密集型(也有少数属于CPU密集型)。所以,其实很多时候java设计的web应用并没有想象中那么高性能(可能并不会比python之类的高出几个数量级)。
python设计的一个缺陷就是多线程永远只能使用一个核(解释器中GIL设计所致)。当然多进程不受影响。这也导致了Tornado不建议使用多线程,但是可以在多核CPU时尝试多进程。
nodejs版本切换
https://www.cnblogs.com/conserdao/p/6876381.html
http://web.jobbole.com/84249/
Ubuntu Server的Vim可能会出现中文乱码,这时候可能是vim的编码没设置好。
可以参考这篇文章:https://www.cnblogs.com/wongbingming/p/7158174.html
虽然网上有的方法是设置 /etc/vim/vim/vimrc文件,但是可能需要先改一下别的地方,不一定能顺利设置成功。总结以下如下。
在/usr/share/vim/vimrc的末尾加上:
set fileencodings=utf-8,gb2312,gb18030,gbk,ucs-bom,cp936,latin1
set termencoding=utf-8
set fileformats=unix
set encoding=prc
U盘变成只读模式的解决方案:
https://blog.youkuaiyun.com/zcf1002797280/article/details/8294073
https://blog.youkuaiyun.com/lh2016rocky/article/details/54614662
进入挂载盘的方法:
U盘在media路径下。
多线程下载ftp文件夹
wget下载文件夹,并保持目录结构,可以使用 -m 选项。但是wget只能采用单线程下载,据说mwget可以多线程,但我没安装成功。
于是parallel+wget形式同时下载多个目录。命令如下:
cat url.txt |
awk '{print "ftp://ftp.ebi.ac.uk/pub/databases/gwas/summary_statistics/" substr($1,0,length($1))}' |
parallel -j 100 wget -m
其中,如果不使用substr截取有效字符串,会出现下载异常。查看进程状态可以看到实际命令是有问题的:
ps aux | grep wget
发现url后面多了个问号。因此我在命令里加上了substr操作。
此外,好像还可以使用xargs
命令操作:
echo url | xargs -n 1 -P 8 -I{} wget '{}'
xargs
命令可以继续了解下。
除了这些,还有 axel 软件可以多线程下载,但是只能下载文件,而不能下载文件夹;还有 ProZilla 也很不错,但是好像已经没人维护了。另外还有个叫 aira2 的软件,堪称下载神器,也可以试试。
暂停运行程序的方法
ctrl+z 可以暂停当前运行的进程,之后使用bg
命令可以恢复运行。
此外,可以使用 kill -stop pid
命令暂停,kill -cont pid
命令恢复运行。
make 安装相关问题
可以先安装一些通用的工具:如build-essential、autoconf等
sudo apt-get install autoconf build-essential
有时候会报错:
No package 'openssl' found
此时即使已经安装了openssl,也依旧报错,可以考虑安装 libssl-dev
有一些其他包也有类似的情况,留个心眼啦。
其中build-essential软件包包含了很多编译c/c++所需要的工具。因此如果想在Ubuntu中编译c/c++程序,安装该软件包会带来很多方便。
编译时可能还会出现这种错误:
WARNING: `aclocal-1.4' is needed, and you do not seem to have it handy on your
system.
根据网上的建议,可以这么操作:
#重新生成 aclocal.m4
aclocal
#重新生成configure文件
autoconf -i -v -f
# 删除原来的makefile
find ./ -name Makefile -exec rm -rf {} \;
# 重新生成Makefile
./configure
偶尔可行。
supervisor报错:unix:///var/run/supervisor.sock no such file
笔者遇到的通常原因是:配置文件所需的log文件目录丢失,导致supervisor服务停止运行。应当创建需要的目录,然开启服务:
systemctl start supervisor
如果不行,可以参考网上的解决方案,如:supervisor “unix:///var/run/supervisor/supervisor.sock no such file” 解决方法
Ubuntu安装桌面
可参考:ubuntu 16.04 安装桌面环境 gnome 和 Ubuntu 16.04 安装 Gnome 桌面环境 及 给Ubuntu服务器版安装GNOME桌面
主要步骤如下:
安装 xinit
sudo apt install -y xinit
安装登录管理器 gnome display manager,简称 gdm
sudo apt install -y gdm
安装桌面环境
sudo apt install -y ubuntu-gnome-desktop
Ubuntu安装R和Rstudio
可参考:Ubuntu16.04 安装R与RStudio
主要步骤如下:
安装R
首先需要在/etc/apt/sources.list文件的末尾添加 (xenial是对应于16.0版本,其他版本请稍作修改)
deb https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/linux/ubuntu xenial/
然后执行:
sudo apt-get update
sudo apt-get install r-base
sudo apt-get install r-base-dev
安装RStudio
直接去RStudio官网下载deb文件,然后使用 dpkg -i命令安装。
sudo dpkg -i <package.deb>
Ubuntu中使用R,各种依赖需要手动安装,包括各种外部插件,比如xml-dev,libcurl-dev等等之类的(具体忘记名字了),需要手动apt-get install,反正很多这样的lib,安装比较浪费时间。请安装最新版的R,要不然容易遇到不兼容问题。安装新版本前,请先卸载旧版本和相应的包。
另外,安装包的时候,请务必使用镜像。
Ubuntu中 apt-get -f install 命令:Ubuntu中 apt-get -f install 命令
服务器配置
unix:///var/run/supervisor.sock no such file
sudo touch /var/run/supervisor.sock
sudo chmod 777 /var/run/supervisor.sock
sudo service supervisor restart
参考自:http://blog.youkuaiyun.com/tianjiewang/article/details/49481869
error: <class 'socket.error'>, [Errno 111] Connection refused: file: /usr/lib64/python2.6/socket.py line: 567
sudo supervisord -c /etc/supervisor/supervisord.conf
sudo supervisorctl -c /etc/supervisor/supervisord.conf
参考自:https://stackoverflow.com/questions/18859063/supervisor-socket-error-issue
Error: file is not executable. 配置了,又说FATAL Exited too quickly (process log may have details
注意chmod a+x app.py
参考自:https://www.liaoxuefeng.com/discuss/001409195742008d822b26cf3de46aea14f2b7378a1ba91000/00146008830920794e52f71cd764f0a968bee2a8ae32d49000
supervisor: child process was not spawned
加上#!/usr/bin/python
参考自:http://blog.youkuaiyun.com/u010565244/article/details/50042731