Linux
下制作Ubuntu
安装U
盘可以通过终端命令来完成:
分类: Linux
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它主要用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。
Ubuntu 16.04系统上Clang与GCC之间切换
在编译C++
代码的时候,我们有时需要比较一下不同编译器之间优化性能的差异,因此需要在Clang
与GCC
之间进行切换,用来比较最后的实际效果。
在Ubuntu 16.04
系统上使用如下命令进行切换
$ sudo apt-get install clang $ sudo update-alternatives --config c++
参考链接
Ubuntu 16.04上Linux C++程序性能分析工具perf使用入门
目前,perf
是Linux
系统上最全面最方便的一个性能检测工具。由Linux
内核携带并且同步更新。
Ubuntu 16.04
系统上需要执行如下命令安装:
# 常规内核使用 #sudo apt-get install linux-tools-generic # 低延时内核使用 #sudo apt-get install linux-tools-lowlatency # 因此我们根据内核自动选择安装 $ sudo apt-get install linux-tools-`uname -r | cut -d- -f1-2`-`uname -r | cut -d- -f3` $ sudo apt-get install linux-tools-common #解决报错"Kernel address maps (/proc/{kallsyms,modules}) were restricted. Check /proc/sys/kernel/kptr_restrict before running 'perf record'". $ sudo sh -c " echo 0 > /proc/sys/kernel/kptr_restrict"
使用方法如下(gcc
编译时最好使用-g
参数,生成符号,方便调试):
#生成性能日志文件,默认生成 perf.data $ sudo perf record -e cpu-clock -g ./hello #解析性能日志 $ perf report -g -i perf.data
参考链接
Linux C++程序进行性能分析工具gprof使用入门
软件的性能是软件质量的重要考察点,不论是在线服务程序还是离线程序,甚至是终端应用,性能都是用户体验的关键。这里说的性能重大的范畴来讲包括了性能和稳定性两个方面,我们在做软件测试的时候也是要重点测试版本的性能表现和稳定性的。对于软件测试过程中发现的性能问题,如何定位有很多的方法。基本的方法可能是开发者对代码进行review
,或者是使用一些工具对代码进行性能分析。常见的性能分析工具有哪些呢?以下两篇文章做了详细的总结:
- https://computing.llnl.gov/tutorials/performance_tools/#Considerations
- http://en.wikipedia.org/wiki/List_of_performance_analysis_tools
gprof
是可用于Linux C++
代码性能分析工具之一。
继续阅读Linux C++程序进行性能分析工具gprof使用入门
解决执行"sudo echo xxx > log.txt" 时提示"Permission denied"
在执行
$ sudo echo xxx > log.txt
命令时候,会提示错误
Permission denied
这个错误的原因在于sudo
给echo
提权,但是并没有给重定向命令提权,导致在输出到文件的时候是没有权限的。
解决方法为使用tee
命令,如下:
$ echo xxx | sudo tee log.txt
参考链接
ubuntu 16.04 LTS更改机器名后执行sudo提示"sudo: 无法解析主机:xx-ubuntu: 连接超时"
ubuntu 16.04 LTS
更改机器名后执行sudo
提示"sudo: 无法解析主机:xx-ubuntu: 连接超时
"。
出现这种问题是hosts
文件没有配置好所导致的,linux
无法解析到您的主机地址,解决方案如下:
$ sudo vim /etc/hosts
打开文件以后,将其中的:
127.0.1.1 xxx(旧主机名)
修改为新的主机名。
Ubuntu 14.04上的Apache服务器限制单个用户的下载带宽
今天突然发现自己的服务器访问异常缓慢,从阿里云的监控平台上看到,CPU的利用率并不高,但是带宽却已经被吃满了,导致网站访问异常缓慢,跟踪了一下发现是某个用户下载网站上的大文件导致了带宽吃紧的情况。因此需要限制某个用户的独占带宽。
具体操作
1.安装带宽限制模块
$ sudo apt-get install libapache2-mod-bw
2.启用模块
$ a2enmod bw
3.配置网站对于带宽的限制规则
$ sudo vim /etc/apache2/sites-enabled/000-default.conf
在原有的
<VirtualHost *:80> ................... ................... </VirtualHost>
之间增加如下内容
# activate bandwidth limitation BandwidthModule On ForceBandWidthModule On # * 表示文件类型,所有大于1000k的文件下载速度100k , 这里我当时以为两个单位一样的。。。 LargeFileLimit * 1000 100000 # 不限制单个用户的带宽占用 BandWidth all 0 # 每个IP地址建立的最大连接数量,由于NAT上网的存在,多用户可能同一个外网IP,因此这个数字不可太小 MaxConnection all 120
然后重启Apache2
.
$ sudo service apache2 restart
注意,如果配置了HTTPS,那么对应的配置文件也需要调整。
参考链接
Ubuntu 14.04检查是谁占用了带宽
iftop
工具。安装如下:
$ sudo apt-get install iftop
阿里云的ECS服务器上,外网网卡默认是eth1,因此执行如下命令:
$ 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
,就可以阅读包含在软件包当中的使用手册、获得更多与之相关的知识。
参考链接
Linux下查看指定目录的大小
此处以名为"Archiva"的目录为例:
$ du -h --max-depth=0 Archiva
或者(优先推荐此命令,速度快)
$ du -sh Archiva
参考链接
Linux ls列出目录下所有文件数量
1.查看统计当前目录下文件的个数
$ ls -l | grep "^-" | wc -l
2.查看统计当前目录下文件的个数,包括子目录里的。
$ ls -lR| grep "^-" | wc -l
3.查看某目录下文件夹(目录)的个数,包括子目录里的。
$ ls -lR| grep "^d" | wc -l