ubuntu 16.04 LTS
启动Eclipse Neno.3
报错"An error has occurred. See the log file
",具体如下图所示:
继续阅读ubuntu 16.04 LTS启动Eclipse Neno.3 报错"An error has occurred. See the log file"
Ubuntu(友邦拓,网友也喜欢称之为“乌班图”)是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想.
ubuntu 16.04 LTS
启动Eclipse Neno.3
报错"An error has occurred. See the log file
",具体如下图所示:
继续阅读ubuntu 16.04 LTS启动Eclipse Neno.3 报错"An error has occurred. See the log file"
Ubuntu 16.04/14.04.5
上已经可以简化到直接用命令行来安装Nvidia CUDA
驱动了,不需要以往的繁琐操作,只是安装的版本比较老,但是目前已经足够使用了。
1 |
$ sudo apt install nvidia-cuda-toolkit |
安装的版本目前是Nvidia CUDA 7.5(Ubuntu 16.04)/Nvidia CUDA 5.5(Ubuntu 14.04.5)
版本,最新的Nvidia CUDA 8.0
版本还是需要从Nvidia
官网下载,然后手工安装才行。
更加详细的信息参考链接:Ubuntu速配指南,Ubuntu release end of life
相信有很多朋友会问,我已经升级 Ubuntu 内核很多次了,但要如何卸载老旧无用的 Linux 内核文件来节省磁盘空间呢?本文我们就来介绍移除老旧 Ubuntu 内核文件的方法。
在 Ubuntu 环境中,我们有很多种方式可以升级内核。 Ubuntu 桌面版本可以在每天自动更新时升级内核,Ubuntu Server 可以使用 unattended-upgrade 自动更新的方式来升级内核,当然还可以使用 apt-get 或 aptitude 来同时兼容 Ubuntu 桌面或服务器版本。
随着使用时间的推移,被替换下来的老旧内核版本将会占用一定的磁盘空间而造成浪费。每个内核映像文件和相关的模块文件/header(头文件)会占用大约 200 – 400 M 的磁盘空间,如果频繁升级内核版本,老旧内核文件对空间的浪费将会迅速增加。
Ubuntu-make
可以非常方便的帮助开发者安装开发工具,只需要一条命令即可。但是由于Eclipse
官网的调整,导致默认通过apt-get
安装的Ubuntu-make
无法正确的从Eclipse
官网下载安装包,一直提示:
1 |
umake eclipse Download page changed its syntax or is not parsable |
因此只能是卸载默认的安装包,然后从github
上手工下载安装最新的版本来解决这个问题,具体操作如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ sudo apt-get remove ubuntu-make $ sudo apt-get autoremve $ sudo apt-get update $ sudo apt-get install git $ sudo apt-get install python3-setuptools $ sudo apt-get install python3-yaml $ sudo apt-get install python3-argcomplete $ sudo apt-get install python3-progressbar $ sudo apt-get install python3-gnupg $ git clone https://github.com/ubuntu/ubuntu-make.git $ cd ubuntu-make/ $ python3 setup.py build $ sudo python3 setup.py install $ /usr/local/bin/umake -v ide eclipse-cpp |
Can't download eclipse anymore, as download link has changed
在配置nginx
做实验时配置错了,导致访问不了虚拟主机。一狠心把nginx
的配置文件目录(/etc/nginx
)都删除了,而且我没有备份这些配置文件,因此想重装nginx
。
本来以为直接使用如下apt-get
指令
1 2 |
$ sudo apt-get --purge remove nginx $ sudo apt-get install nginx |
就可以搞定,但实际上并没有有自动产生nginx
的配置文件,连/etc/nginx
目录都没产生。
于是autoremove
1 2 3 |
$ sudo apt-get --purge remove nginx $ sudo apt-get autoremove $ sudo apt-get install nginx |
提示
1 |
awk: cannot open /etc/nginx/nginx.conf (No such file or directory) |
虽然产生了/etc/nginx
目录了,但只有部分配置文件
1 |
conf.d sites-available sites-enabled |
于是
1 2 3 |
$ sudo apt-get --purge remove nginx $ sudo apt-get autoremove $ dpkg --get-selections | grep nginx |
罗列出与nginx
相关的软件
1 |
nginx-common |
然后卸载并重新安装
1 2 |
$ sudo apt-get --purge remove nginx-common $ sudo apt-get install nginx |
nginx配置失败,卸载后重装出问题 awk: cannot open /etc/nginx/nginx.conf (No such file or directory),nginxawk
Apache 2.4
版本开始已经尝试借鉴Nginx
的实现方式来处理网络连接。但是到目前(2017.2.22)为止,实现的并不彻底,只是在处理HTTP
协议的时候使用异步模式,而处理HTTPS
协议的时候,依旧使用每个连接一个线程的模式。据说完整的支持HTTPS
异步,要到Apache 3.x
版本了。
目前的Apache MPM event
本质上还是Apache MPM worker
的优化版本,并不是一个完整的独立模式。
尽管支持的不是太完善,但是这部分的实现,已经能比较好的改善Apache 2.4
的网络处理性能了,尤其是对于我这种访问压力不是太大的网站来说,目前应该是够用了的。暂时可以缓解一下迁移到Nginx
的急迫性,并且比较好的减少访问网站时候的延迟比较高的问题。
到目前(2017.2.22)为止在Ubuntu 14.04.5
版本上Apache Event MPM
还不属于正式版本,而是被部署到了backports
(待发布)分支上,处于候选发布状态,因此我们安装的时候,需要执行指定backports
,具体执行命令如下:
1 |
$ sudo apt-get -t trusty-backports install apache2-mpm-event |
模块的配置文件在/etc/apache2/mods-available/mpm_event.conf
,目前我这边用默认配置已经足够了(足见访问量是多么的少,呵呵)。
启用Apache MPM event
模块
1 2 3 4 5 6 7 |
$ sudo a2dismod mpm_worker $ sudo a2dismod mpm_prefork $ sudo a2enmod mpm_event $ sudo service apache2 restart |
查询Apache 2.4
当前正在使用的模块
1 |
$ a2query -M |
返回值会是event
, prefork
, worker
中的一个,如果返回了event
,则说明我们已经成功启用了Apache MPM event
模块。
目前实际测试来看,确实能非常明显的加快网站的访问速度,访问延迟明显变短。
今天突然发现自己的服务器访问异常缓慢,从阿里云的监控平台上看到,CPU的利用率并不高,但是带宽却已经被吃满了,导致网站访问异常缓慢,跟踪了一下发现是某个用户下载网站上的大文件导致了带宽吃紧的情况。因此需要限制某个用户的独占带宽。
1.安装带宽限制模块
1 |
$ sudo apt-get install libapache2-mod-bw |
2.启用模块
1 |
$ a2enmod bw |
3.配置网站对于带宽的限制规则
1 |
$ sudo vim /etc/apache2/sites-enabled/000-default.conf |
在原有的
1 2 3 4 |
<VirtualHost *:80> ................... ................... </VirtualHost> |
之间增加如下内容
1 2 3 4 5 6 7 8 9 |
# activate bandwidth limitation BandwidthModule On ForceBandWidthModule On # * 表示文件类型,所有大于1000k的文件下载速度100k , 这里我当时以为两个单位一样的。。。 LargeFileLimit * 1000 100000 # 不限制单个用户的带宽占用 BandWidth all 0 # 每个IP地址建立的最大连接数量,由于NAT上网的存在,多用户可能同一个外网IP,因此这个数字不可太小 MaxConnection all 120 |
然后重启Apache2
.
1 |
$ sudo service apache2 restart |
注意,如果配置了HTTPS,那么对应的配置文件也需要调整。
iftop
工具。
1 |
$ sudo apt-get install iftop |
1 |
$ sudo iftop -i eth1 |
Apache2
的访问日志中对应看看IP
地址在访问哪些文件就知道具体情况了。
利用iftop找出是谁占用了带宽
有时候我们的网络缓慢并不是由远程服务器或路由器所引起,而只是因为系统中的某些进程占用了太多可用带宽。虽然从直观角度我们很难确定哪些进程正在使用带宽,但也有一些工具能帮大家把这些捣蛋的家伙揪出来。
top
就是这样一款出色的故障排查工具,它的出现还带来一系列思路相似的衍生品,例如iotop
--能够确定到底是哪些进程占用了大部分磁盘I/O性能。最终名为iftop
的工具横空出世,能够在网络连接领域提供同等功能。与top不同,iftop不会亲自关注进程情况,而是列出用户服务器与远程IP之间占用带宽最多的连接对象。举例来说,我们可以在iftop中快速查看备份服务器IP地址在输出结果中的位置来判断备份工作有没有大量占用网络带宽。
iftop
输出图示
红帽与Debian
的各个发行版都能使用iftop
这一名称的软件包,但在红帽发行版方面大家可能需要从第三方资源库才能获取。一旦安装过程完成,我们在命令行中运行iftop
命令即可启用(需要root
权限)。和top
命令一样,我们可以点Q键退出。
在iftop
界面屏幕的最上方是显示全局流量的信息栏。信息栏之下则是另外两列信息,一列为源IP、另一列为目标IP,二者之间以箭头填充帮助我们了解带宽被用于从自己的主机向外发送数据还是从远程主机端接收数据。再往下则是另外三个栏位,表示两台主机之间在2秒、10秒及40秒中的数据传输速率。与平均负载相似,大家可以看到目前带宽使用是否达到峰值,或者在过去的哪个时段达到过峰值。在屏幕的最下方,我们会找到传输数据(简称TX)与接收数据(简称RX)的总体统计结果。与top
差不多,iftop
的界面也会定期更新。
在不添加额外参数的情况下,iftop
命令通常能够满足我们故障排查的全部需求;但有的时候,我们可能也希望利用一些选项实现特殊功能。iftop
命令在默认情况下会显示查找到的第一个端口的统计信息,但在某些服务器中大家可能会使用多个端口,所以如果我们希望让iftop
打理第二个以太网端口(即实例中的eth1
),那么请输入iftop -i eth1
。
默认情况下,iftop
会试图将所有IP地址通过解析转换为主机名称。这样做的缺点在于一旦远程DNS
服务器速度缓慢,报告的生成速度也将随之惨不忍睹。另外,所有DNS解析活动都会增加额外的网络流量,而这些都会显示在iftop
的报告界面当中。因此要禁用网络解析功能,别忘了在iftop
命令后面加-n
哦。
一般说来,iftop
显示的是主机之间所使用的全局带宽;但为了帮助大家缩小排查范围,我们可能希望每台主机具体使用哪个端口进行通信。毕竟只要找到了主机中占用最大带宽的网络端口,我们就可以在判断是否接入FTP
端口之外进行其它排查手段。启动iftop
之后,按P键可以切换端口的显示与隐藏状态。不过大家可能会注意到,有时候显示所有端口状态可能导致我们正在关注的主机被挤出当前显示屏幕。如果出现这种情况,我们还可以按S
或D
键来仅显示来自特定源或特定目标的端口。由于服务项目众多,目标主机可能随机使用多个端口并发生带宽占用峰值,这将导致工具无法识别出正在使用的服务,因此仅显示源端口还是相当有用的。不过服务器上的端口也可能与当前设备上的服务相对应。在这种情况下,我们可以使用前面提到的netstat -lnp
来找出服务所侦听的端口。
与大多数Linux
命令相似,iftop
也拥有多种高级选项。我们在文章中提到的这些已经足以涵盖大多数故障排查需求,但为了满足大家进一步了解iftop
功能的愿望,我教各位一个小技巧:只要输入man iftop
,就可以阅读包含在软件包当中的使用手册、获得更多与之相关的知识。
一般在安装目录下面或者桌面上创建文件,命名为:idea.desktop
使用vim
编辑该文件
1 |
$ vim idea.desktop |
内容如下:
1 2 3 4 5 6 7 8 |
[Desktop Entry] Name=IntelliJ IDEA Comment=IntelliJ IDEA Exec=/home/longsky/Application/idea-IU-163.7743.44/bin/idea.sh Icon=/home/longsky/Application/idea-IU-163.7743.44/bin/idea.png Terminal=false Type=Application Categories=Developer; |
接着给予这个文件执行权限
1 |
$ chmod +x idea.desktop |
以后双击这个图标,就可以直接启动IntelliJ IDEA
了。