linux知识点

经过gui来使用
经过api来使用
经过cli来使用
经过tui来使用
php

 

进程不在,但tcp链接还一直存在的解决办法--tcpkill命令html

http://www.centoscn.com/CentOS/Intermediate/2013/1025/1979.html

在linux系统中,遇到TCP连接迟迟不能释放的状况,相似FIN_WAIT一、FIN_WAIT2的状态,释放时间不肯定,并且对应的程序已经关闭,相应的端口也再也不监听,没法经过杀进程来解决,这种状况下,为了快速恢复正常,不得不采用重启服务器的方法加以解决,在通过各大网站搜索找到linux下dsniff包中含有tcpkill命令,该命令能够将上述状态的TCP连接加以清除,进而免除服务器重启的状况。

在dsniff集成工具包中有一个tcpkill命令,能够解决这类问题:
下载地址:http://pkgs.repoforge.org/dsniff/ 此目录中能够找到相应系统的版本
wget  http://pkgs.repoforge.org/dsniff/dsniff-2.4-0.1.b1.el5.rf.x86_64.rpm
rpm -ivh dsniff-2.4-0.1.b1.el5.rf.x86_64.rpm


安装完成后能够发现系统多了一个tcpkill的命令,命令使用方法以下:
tcpkill -9 port ftp &>/dev/null
tcpkill -9 host 192.168.10.30 &>/dev/null
tcpkill -9 port 53 and port 8000 &>/dev/null
tcpkill -9 net 192.168.10 &>/dev/null
tcpkill -9 net 192.168.10 and port 22 &>/dev/nulljava

 

 

win与linux之间的乱码与格式混乱问题mysql

文件名与文件内容乱码 linux

文件是在Windows下建立的,而Windows的文件名中文编码默认GBK,Linux中默认文件名编码为UTF-8,编码不一致致使了文件名乱码的问题,解决这个问题须要对文件名进行转码,这个工具就是convmv。
convmv就是更改文件名编码方式的一个工具。
好比
sudo convmv -f gbk -t utf-8 -r --notest  /home
就是将/home目录下原来文件名是gbk编码方式的所有改成utf-8格式的。这里 -f  后面为原来的编码方式,-t 后面是要更改成的编码方式, -r 表示这个目录下面的全部文件, --notest 表示立刻执行,而不是仅仅测试而已。另外这命令好像要root才能执行,所以要加上 sudo。

ios

windows下的一个文本文件复制到linux下后,文件名与内容都是乱码,用下面处理一下就能够了。这样就解决了文件名与内容两个问题。程序员

[root@kvm2 share]# iconv -f gbk -t utf-8 Ŀ??.txt -o b.txtweb

[root@kvm2 share]# rpm -qf /usr/bin/iconv
glibc-common-2.17-106.el7_2.4.x86_64redis

[root@kvm2 share]# rpm -qf /usr/bin/convmv
convmv-1.15-2.el7.noarchsql

 

在Linux中查看文件编码能够经过如下几种方式:
1.在Vim 中能够直接查看文件编码
:set fileencoding
便可显示文件编码格式。
若是你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你能够在
~/.vimrc 文件中添加如下内容:
set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936
这样,就可让vim自动识别文件编码(能够自动识别UTF-8或者GBK编码的文件),其实就是依照 fileencodings提供的编码列表尝试,若是没有找到合适的编码,就用latin-1(ASCII)编码打开。

 

Linux下新建的txt文件在Windows下用记事本打开会挤在一块儿(没有了换行符,变成黑方块),缘由是Windows下换行符号是“\r\n”,而linux下是“\n”没有”\r”,记事本不支持\n换行(它只支持\r\n形式的换行),因此会那样。解决方法给个最简单的:直接修改扩展名为doc,而后用word打开。 须要的话本身拷贝回txt

 

 

http://www.openfirmware.info/OpenBIOS
It is Open Firmware's goal to work on all common platforms, like x86, AMD64, PowerPC, ARM, Sparc and Mips. With its flexible and modular design, Open Firmware targets servers, workstations and embedded systems, where a sane and unified firmware is a crucial design goal and reduces porting efforts noticably.

vga bios
主板 bios
raid bios
等等

 

层级

1.硬件

2.bios

3.bt(bootloader)

4.kernel

5.shell

6.daemon

7.app

 

 

远程链接

VNC
VNC使用的是RFB协议来作屏幕分享和远程操做的软件,由著名的AT&T欧洲研究实验室开发。使用时须要客户端软件和服务器软件配合使用。

远程桌面
远程桌面使用RDP(Remote Desktop Protocol)远程桌面协议,大部分Windows都默认支持此协议,能够远程接入操做桌面。

RFB和RDP区别
RFB是在服务器端将窗口在显存中画好以后将图像传给客户端,客户端只充当一个图像解码显示的角色; RDP则将画图的工做交给了客户端,服务器须要了解客户端显示能力的具体状况,以便做出相应调整。
RFB主要传图像,RDP主要传指令。就通常应用而言,RFB数据量太大,RDP对客户端要求较高,所以RFB适用于瘦客户端,RDP适用于低速网络。

 

软连接

今天在安装mysql软件的时候,mysql/bin目录下用ln -s mysql /usr/local/bin/mysql 建立软链接,后来启用mysql时弹出错误:
-bash: /usr/local/bin/mysql: Too many levels of symbolic links
从网上查找了一下缘由,原来是创建软链接的时候采用的是相对路径,因此才会产生这样的错误,解决方式是采用绝对路径创建软连接:
ln -s /usr/../mysql/bin/mysql   /usr/local/bin/mysql
这样问题就解决了。

 

 

http://www.server-world.info/en/ 这个站点还比较清晰

 

httpd与tomcat区别
 联系
  1)Apache是普通服务器,自己只支持html即普通网页,能够经过插件支持php,还能够与Tomcat连通(Apache单向链接Tomcat,就是说经过Apache能够访问Tomcat资源,反之否则)。  
  2)Apache只支持静态网页,但像asp、jsp、php、cgi等动态网页就须要Tomcat来处理。
  3)Apache和Tomcat整合使用:
    若是客户端请求的是静态页面,则只须要Apache服务器响应请求;
    若是客户端请求动态页面,则是Tomcat服务器响应请求,将解析的JSP等网页代码解析后回传给Apache服务器,再经Apache返回给浏览器端。
    这是由于jsp是服务器端解释代码的,Tomcat只作动态代码解析,Apache回传解析好的静态代码,Apache+Tomcat这样整合就能够减小Tomcat的服务开销。
  4)Apache和Tomcat是独立的,在同一台服务器上能够集成。
区别
  Apache是有C语言实现的,支持各类特性和模块从而来扩展核心功能;Tomcat是Java编写的,更好的支持Servlet和JSP。
  一、Apache是Web服务器,Web服务器传送(serves)页面使浏览器能够浏览,Web服务器专门处理HTTP请求(request),可是应用程序服务器是经过不少协议来为应用程序提供 (serves)商业逻辑(business logic)。
  Tomcat是运行在Apache上的应用服务器,应用程序服务器提供的是客户端应用程序能够调用(call)的方法 (methods)。它只是一个servlet(jsp也翻译成servlet)容器,能够认为是Apache的扩展,可是能够独立于apache运行。
  二、Apache是普通服务器,自己只支持html静态普通网页。不过能够经过插件支持PHP,还能够与Tomcat连通(单向Apache链接Tomcat,就是说经过Apache能够访问Tomcat资源,反之否则),Tomcat是jsp/servlet容器,同时也支持HTML、JSP、ASP、PHP、CGI等,其中CGI须要一些手动调试,不过很容易的。
  三、Apache侧重于http server,Tomcat侧重于servlet引擎,若是以standalone方式运行,功能上Tomcat与apache等效支持JSP,但对静态网页不太理想。
  四、Apache能够运行一年不重启,稳定性很是好,而Tomcat则不见得。
  五、首选web服务器是Apache,但Apache解析不了的jsp、servlet才用tomcat。
  六、Apache是很最开始的页面解析服务,tomcat是后研发出来的,从本质上来讲tomcat的功能彻底能够替代Apache,但Apache毕竟是tomcat的前辈级人物,而且市场上也有很多人还在用Apache,因此Apache还会继续存在,不会被取代,apache不能解析java的东西,但解析html速度快。
二者例子:
  Apache是一辆车,上面能够装一些东西如html等,可是不能装水,要装水必需要有容器(桶),而这个桶也能够不放在卡车上,那这个桶就是TOMCAT。
二者整合:
  Apache是一个web服务器环境程序,启用他能够做为web服务器使用不过只支持静态网页,不支持动态网页,如asp、jsp、php、cgi
  若是要在Apache环境下运行jsp就须要一个解释器来执行jsp网页,而这个jsp解释器就是Tomcat
  那为何还要JDK呢?由于jsp须要链接数据库的话就要jdk来提供链接数据库的驱程,因此要运行jsp的web服务器平台就须要APACHE+TOMCAT+JDK
整合的好处:
  若是客户端请求的是静态页面,则只须要Apache服务器响应请求
  若是客户端请求动态页面,则是Tomcat服务器响应请求
  由于jsp是服务器端解释代码的,这样整合就能够减小Tomcat的服务开销

 

控制台终端配色方案

通常的Linux发行版默认的终端都是16色的,但事实上几乎全部的终端都支持256色终端。只须要把环境变量TERM设为xterm-256color(xterm算是终端模拟器的一个标准,Gnome Terminal用gnome-256color,Konsole能够用konsole-256color)。
其实,不少终端,好比 xterm、urxvt,以及 Mac OSX 中的 Iterm.app 等均可以支持256色,能够在这些终端下看到更加细腻优雅的颜色表现。
这里涉及到了几个重要的程序的配置,供你们参考。注意,不是全部的终端和命令行应用都支持256色。

默认的/etc/DIR_COLOR及其三个文件是针对ls这个命令的配色方案

vim-enhanced这个包有vi的配色方案

http://www.linuxidc.com/Linux/2016-02/128068.htm

相同的colorschema,vim和gvim的颜色差距仍是很大的,由于gvim使用X的颜色,而vim只能使用终端提供的颜色,因此形成了两者的显示差别。

background schemas(白灰黑三种,在8色模式下)
8 colors mode
256 colors mode
/usr/share/terminfo目录是全部支持的终端类型

xterm开启256色

如今的终端模拟器早就支持256色了,不过默承认能仍是8色的。

查看终端类型
$ echo $TERM
xterm

tty是linux,ssh是xterm
查看xterm终端支持的颜色
$ tput colors
8

tput clos lines
xterm终端默认仍是8色的

只要将终端类型更改成xterm-256color便可,有两种方式能够来修改

 

改网卡名

 

Fedora 搞的consistent network device names本人觉的很哦心,很难记。

 

all onboard ethernet adapters are labeled as emX (em1, em2…) and all PCI ethernet adapters are labeled as pXpX (p[slot]p[port], like p7p1 for port 1 on slot 7).

 

个人网卡名就变成了p3p1

 

下面咱们就来把她改为eth0

 

 

ubuntu

安装ssh,默认没有装

$sudo apt-get install openssh-server

切换root用户

$sudo su,而后输入普通用户的密码就能够了

注意: 出于安全考虑,默认时Ubuntu的root用户时没有固定密码的,它的密码是随机产生而且动态改变的,貌似是每5分钟改变一次,因此用su(switch user)是不能够的,由于咱们不知道root的密码
默认root用户是无固定密码的,而且是被锁定的,若是想给root设置一个密码,只需执行命令:sudo passwd root 而后根据提示一步一步来
这样就能够su root ,输入root密码切换到root用户

 

localization问题

/usr/local/locale这个目录很是重要,发现这个是受svn-book的第七章启发,这里面关于语言的解释比较清晰。

[root@localhost LC_MESSAGES]# pwd
/usr/share/locale/zh_CN/LC_MESSAGES

[root@localhost LC_MESSAGES]# file make.mo

系统支持的
locale -a(有多种语言)
当前定义的
locale()
只重定义某一项
export LC_MESSAGES=zh_TW
[root@host02 .subversion]# svn hel
未知的命令: 'hel'
請使用 'svn help' 以了解用法.
[root@host02 .subversion]# export LC_MESSAGES=zh_CN
[root@host02 .subversion]# svn hel
未知命令: “hel”
使用“svn help”获得用法。

svn能这样显示,是由于它自己支持国际化,即Localization

程序必须有.mo模块

[root@localhost LC_MESSAGES]# rpm -ql tar
/bin/gtar
/bin/tar
/usr/share/doc/tar-1.23
/usr/share/doc/tar-1.23/AUTHORS
/usr/share/doc/tar-1.23/ChangeLog
/usr/share/doc/tar-1.23/ChangeLog.1
/usr/share/doc/tar-1.23/NEWS
/usr/share/doc/tar-1.23/README
/usr/share/doc/tar-1.23/THANKS
/usr/share/doc/tar-1.23/TODO
/usr/share/info/tar.info-1.gz
/usr/share/info/tar.info-2.gz
/usr/share/info/tar.info.gz
/usr/share/locale/bg/LC_MESSAGES/tar.mo
/usr/share/locale/cs/LC_MESSAGES/tar.mo
/usr/share/locale/da/LC_MESSAGES/tar.mo
/usr/share/locale/de/LC_MESSAGES/tar.mo
/usr/share/locale/el/LC_MESSAGES/tar.mo

 

34.改root密码

[root@84-monitor ~]# passwd
Changing password for user root.
New password:
/usr/share/cracklib/pw_dict.pwd: No such file or directory
PWOpen: No such file or directory
[root@84-monitor ~]# yum -y reinstall cracklib-dicts

33.内核

Linux 内核目前的开发模式是Linus Torvalds制做的新版本的发布,也被称为“vanilla”或“mainline”的内核,这意味着它们包含了主要的,通用的开发分支。在托瓦尔兹 进行初始一轮集成由全部其余程序员,几个回合的bug修正预发布版的主要变化以后,这个分支大约每3个月正式发布一个新的版本。

32.redis的内存分配

咱们知道Redis并无本身实现内存池,没有在标准的系统内存分配器上再加上本身的东西。因此系统内存分配器的性能及碎片率会对Redis形成一些性能上的影响。
Redis采用不一样内存分配器tcmalloc和jemalloc和glibc碎片率对比

31.linux下watchdog

Linux 自带了一个 watchdog 的实现,用于监视系统的运行,包括一个内核 watchdog module 和一个用户空间的 watchdog 程序。
内核 watchdog 模块经过 /dev/watchdog 这个字符设备与用户空间通讯。用户空间程序一旦打开 /dev/watchdog 设备(俗称“开门放狗”),
就会致使在内核中启动一个1分钟的定时器(系统默认时间),此后,用户空间程序须要保证在1分钟以内向这个设备写入数据(俗称“按期喂狗”),
每次写操做会致使从新设定定时器。若是用户空间程序在1分钟以内没有写操做,定时器到期会致使一次系统 reboot 操做(“狗咬人了”呵呵)。
经过这种机制,咱们能够保证系统核心进程大部分时间都处于运行状态,即便特定情形下进程崩溃,
因没法正常定时“喂狗”,Linux系统在看门狗做用下从新启动(reboot),核心进程又运行起来了。多用于嵌入式系统。
Watchdog在实现上能够是硬件电路也能够是软件定时器,可以在系统出现故障时自动从新启动系统。在Linux 内核下,
watchdog的基本工做原理是:当watchdog启动后(即/dev/watchdog 设备被打开后),若是在某一设定的时间间隔内/dev/watchdog没有被执行写操做, 硬件watchdog电路或软件定时器就会从新启动系统。

31.Partition 1 does not end on cylinder boundary.警告理解

分区 1 没有在柱面上结束。

不少论坛上都说出现这种状况的缘由是正常的,整体的缘由以下
fdisk –l 命令是按照柱面来进行分区显示的,因此须要按照垂直的空间进行理解,但如今的计算机在显示时仍然会按照扇区来理解(由于如今磁盘是使用LBA(使用扇区进行寻址)取代之前的CHS(柱面、磁头、扇区)方式记录硬盘分区的),因此会判断分区没有在柱面结束;若是咱们使用命令 sfdisk –uS -l ,这个命令的意思是:“give size in sectors instead of sylinders”便是按照扇区的来进行分区显示,这样就能够看到以扇区方式显示分区的了。能够看到相邻逻辑分区之间都有 64 扇区的空间,那里存放逻辑分区表。
现代操做系统使用LBA而不是CHS来记录硬盘分区.若是用扇区代替柱面,咱们将看到:

sfdisk -uS -l /dev/sda

30.centos,安装时的分区方案

有三个标准能够选择:基础的标准分区(针对单磁盘而言),多磁盘的raid分区,多磁盘的lvm

Linux系统通常须要三个分区:Boot分区、根分区、swap分区。其中,必不可少的是根分区,boot分区和swap分区无关紧要。考虑到内存可能不足,通常保留swap分区。
分区表只有64bytes,最多只能分红四个分区,其中扩展分区最多只能有一个。因此推荐的分区方法是P+P+P+E,这样系统没有用完的空间可在系统安装完成后根据须要自行分配。若是分区方式是P+P+P+P,那系统多余的空间将没法利用。

安装boot loader
  Install boot loader on /dev/sda:将boot引导安装到磁盘/dev/sda前512bytes.
  Boot loader operating system list:boot引导的系统名单。若是是双系统,在这里还会有Window的列表。Default即指定默认的启动系统。
  注意:当初我安装双系统时,Windows下有5个盘:C、D、E、F、G,我是直接把笔记本D盘的空间释放出来,大概100G。这样,在手动分区时,sda1,sda4,sda5,sda六、sda7存在。因为Oracle对RHEL系统版本有要求,重装过屡次系统。出现如下状况:
  1> 由于已经有1个主分区sda1和一个扩展分区sda4存在(注意:sda5,sda6,sda7是sda4这个扩展分区的衍生分区),所以在此只能新建两个主分区,sda2和sda3.第一次我分别将两个分区建为boot分区和根分区,这样在安装boot loader这一步时显示: Install boot loader on /dev/sda,能够直接安装到硬盘MBR上。
  2> 第二次将sda2和sda3分别建为根分区和swap分区,结果在安装boot loader这一步时显示:Install boot loader on /dev/sda2,即便点开Change device,也没有/dev/sda这一项,这意味着boot loader 不能安装在MBR上,这就意味着按照默认的MBR,linux将没法引导。最后,仍是在Rescue Installed System,即救援模式下,将grub文件安装到/dev/sda下:grub-install /dev/sda;

http://en.wikipedia.org/wiki/List_of_tools_to_create_Live_USB_systems    多启动规范的一些列表  multiboot specification

29.YUMI或UUI安装centos6.4-64-minimal不成功的解决办法

用UUI制做完成后只须要将minimal.iso镜像拷贝到u盘根目录下便可,不然会报错

missing iso 9660 image

images文件夹和*.iso在同级目录

将ISOs/下镜像直接解压至当前目录

YUMI Boot other ISO 最下面的要提供 install.img路径,可能解包之后找不到路径

选择 sda1 填路径便可,

/Multiboot/ISOs/images/install.img

/Multiboot/CentOS-6.6-x86_64-minimal/images/install.img

遇到下面的弹窗报错,一般在分区格式化完成后弹出

“unable to read package metadata.this may be due to a missing repodata directory . please ensure that your install tree has been correctly generated ......”

缘由:这是由于/Multiboot/ISOs/repodata/下的文件都没有后缀名,没法识别,因此弹出上面报错

办法:对照/Multiboot/ISOs/repodata/repomd.xml中的uuid的后缀名,逐个补上后缀名便可。总共8个文件

将此:e0d5ad3bff4d0bd6ffd5037d6e76049b09c1d4f697445be6071d100f865a46f3

添加为:e0d5ad3bff4d0bd6ffd5037d6e76049b09c1d4f697445be6071d100f865a46f3-other.xml.gz

http://download.fedoraproject.org/pub/fedora/linux/releases/22/Workstation/x86_64/iso/Fedora-Live-Workstation-x86_64-22-3.iso

 

用YUMI-2.0.2.8.exe安装下面这两个镜像,选择GRUB from RAM,是成功的,2g的u盘只用了一半。

XenServer-7.0.0-main.iso

VMware-VMvisor-Installer-5.1.0.update01-1065491.x86_64.iso

 

28.即时生效与放到文件中永久生效

hostname xxx
vi /etc/sysconfig/network

ifconfig xxx
vi /etc/sysconfig/network-scripts/ifcfg-eth0

sysctl 
echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all

ulimit -n 65535
vi /etc/profile

 

27.服务4种启动方式

systemV  systemd  bsd  upstart

26.rpc.statd

问题描述: 发现运行的进程中有rpc.statd服务,对这个服务非常不了解,就进行探索,发现,在 linux中的 /usr/sbin 目录中有两个文件 rpc.rstatd 和 rpc.statd, 文件名很是相象,他们各自是干啥的呢?
    解答:
    在 linux的 /usr/sbin 目录中有两个文件 rpc.rstatd 和 rpc.statd, 文件名很是相象,但所起的做用是不一样的。
    用途 :
   1. 执行 /usr/sbin/rpc.rstatd 命令会启动 rstatd 后台程序,它是一个服务器,能够从系统核心中获取系统性能统计的相关信息,将结果返回给调用程序。 rstatd daemon 一般是由 inetd daemon 启动的。
目前在进行压力测试时,用户常常在客户端经过使用 load runner 软件来收集应用或数据库服务器的性能数据。 其就是经过给服务器上的 rstatd 后台程序发请求来实现的。
   2. /usr/sbin/rpc.statd 命令会启动 statd 后台程序。 在 NFS 环境中 statd daemon 与 lockd daemon 相结合,为锁机制提供 crash 和 recovery 功能。 statd daemon 除负责维护相关的链接信息外,还监控 /var/statmon/sm 目录, /var/statmon/sm.bak 目录和 /var/statmon/state 文件中的状态信息。 statd 一般是在 lockd 以前启动, statd daemon 的启动和中止是经过 调用系统的 SRC 命令来实现的。

[root@225-oth run]# service nfslock status
rpc.statd (pid  1016) is running...

25.交互模式与直接模式

asterisk -r与asterisk -rx ""
sqlite3
mysqladmin与mysql -p
virsh

24.Linux下编译软件时指定安装目录的好处

源码的安装通常由3个步骤组成:配置(configure)、编译(make)、安装(make install)

Configure是一个可执行脚本,它有不少选项,在待安装的源码路径下使用命令./configure –help输出详细的选项列表。

其中--prefix选项是配置安装的路径,若是不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱。

若是配置--prefix,如:

./configure --prefix=/usr/local/test

能够把全部资源文件放在/usr/local/test的路径中,不会杂乱。

用了—prefix选项的另外一个好处是卸载软件或移植软件。当某个安装的软件再也不须要时,只须简单的删除该安装目录,就能够把软件卸载得干干净净;移植软件只需拷贝整个目录到另一个机器便可(相同的操做系统)。

固然要卸载程序,也能够在原来的make目录下用一次make uninstall,但前提是make文件指定过uninstall。

23.程序里的环境变量

若是有的程序须要一些环境变量的支持,例如在它的man手册页里有变量定义,这时只须要在shell命令行里设置对应的变量名便可
由于这种变量名已在程序里规定好了,名字不能乱起。

echo export TMOUT=1000000 >> /root/.bash_profile; source .bash_profile

22.带进度条提示的拷贝

wget自己就有

rsync命令
#rsync -av --progress /mnt/yidong2/full20100526.tar.gz /mnt/yidong1/
能够实现本机带进度条提示拷贝,能够实现不一样机器带进度条提示拷贝,能够拷贝多个文件

scp命令
#scp -v /mnt/yidong2/full20100526.tar.gz /mnt/yidong1/
本机拷贝没法显示进度
#scp -v /mnt/yidong2/full20100526.tar.gz root@192.168.1.1:/mnt/yidong1/
不一样机器拷贝能够显示进度条,即便不带“-v”参数也能够显示进度条
#scp -v /mnt/yidong2/full20100526.tar.gz root@127.0.0.1:/mnt/yidong1/
变相实现本机带进度条提示拷贝,能够不带“-v”参数

cp命令
没有找到带进度条提示拷贝,有知道的朋友请分享,谢谢。
关于rsync, scp, cp拷贝速度
我作了一个简单的测试,拷贝一个240M的文件,仅供参考
#cp full20100526.tar.gz full20100526.tar.gz.bak
速度很快
#rsync -av --progress full20100526.tar.gz full20100526.tar.gz.bak
速度比较快(113.10MB/s)
#scp -v full20100526.tar.gz root@127.0.0.1:/root/full20100526.tar.gz
速度有些慢(26.9MB/s)

21.刪除大量的log檔案报错处理

rm、cp、mv是unix下面经常使用到的檔案處理指令,當我們须要刪除大量的log檔案,若是檔案數太多就會出現此訊息【/bin/rm: Argument list too long】
解決方式以下:

例如要刪除 /tmp/*.log
則執行【ls /tmp/*.log | xargs rm -f】這樣就能够囉^__^,其余cp,mv同理!

-bash-3.2$ pwd
/u01/app/11.2.0/grid/rdbms/audit
-bash-3.2$ ll|wc -l
895646
-bash-3.2$ rm -rf *
-bash: /bin/rm: Argument list too long

此例相似 find的-exec选项

在使用find命令的-exec选项处理匹配到的文件时,find命令将全部匹配到的文件一块儿传递给exec执行。不幸的是,有些系统对可以传递给 exec的命令长度有限制,这样在find命令运行几分钟以后,就会出现溢出错误。错误信息一般是“参数列太长”或“参数列溢出”。这就是xargs命令 的用处所在,特别是与find命令一块儿使用。Find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是所有,不像 -exec选项那样。这样它能够先处理最早获取的一部分文件,而后是下一批,并如此继续下去。

20.manual section

MANUAL SECTIONS
       The standard sections of the manual include:
       1      User Commands
       2      System Calls
       3      C Library Functions
       4      Devices and Special Files
       5      File Formats and Conventions
       6      Games et. Al.
       7      Miscellanea
       8      System Administration tools and Deamons
       Distributions customize the manual section to their specifics, which often include additional sections.

et. Al.    等,等等
specifics    n. 细节;特性(specific的复数);详情

19.时间戳与时间

unix时间戳,1970年

app时间戳,例如mysql,excel,php,java等

Unix时间戳转换工具能够把Unix时间戳转成北京时间,也能够把北京时间转换成unix时间戳

UNIX时间又称POSIX时间/新纪元时间(Epoch Time):从协调世界时1970年1月1日0时0分0秒起到如今的总秒数,不包括闰秒。正值表示1970以後,负值则表示1970年之前。
Unix 2038 bug(Jason hatchet bug)
说到UNIX时间不得不提Unix 2038 bug(Jason hatchet bug):2038年1月19日3时14分07秒,32位元系统的UNIX时间将会被重置。
32位的UNIX系统会以32位二进制数字表示时间,它们最多只能表示至协调世界时间2038年1月19日3时14分07秒(二进制:01111111 11111111 11111111 11111111),在下一秒二进制数字会是10000000 00000000 00000000 00000000,这是负数,所以各系统会把时间误解做1901年12月13日20时45分52秒(亦有说回归到1970年)。这时可能会令软件发生问题,致使系统瘫痪。
目前解决方案是把系统由32位转为64位系统。在64位系统下,此时间最多能够表示到292,277,026,596年12月4日15时30分08秒。

18.anaconda

anaconda-ks.cfg是你安装本系统时自动生成的一个配置文件,能够用在其它安装过程当中。
install.log是安装的日志文件,通常是安装的每个软件包。
install.log.syslog是安装时对用户及用户组的配置,如建立用户、用户组等。

17.命令行下正常能执行,放入crontab不能执行  2014.11.5

crontab定时任务环境变量丢失问题

命令行下正常能执行,放入crontab 下总是报错,不是提示找不到asterisk命令就是提示不能找到某个库,那只能说明一个问题,是你的环境变量有问题网上的一些方法也不行,例如

在crontab -e里面加入如下是不成功的,也即在/var/spool/cron/root里,
SHELL=/bin/bash
#PATH=/sbin:/bin:/usr/sbin:/usr/bin
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

最后在com这个脚本开头加入下面一行
source /etc/profile终于成功了  折腾了一下午

X-Cron-Env: <LANG=en_US.UTF-8>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Date: Wed,  5 Nov 2014 16:54:01 +0800 (CST)
Status: RO

/var/prtg/scripts/com: line 3: asterisk: command not found

Auto-Submitted: auto-generated
X-Cron-Env: <LANG=en_US.UTF-8>
X-Cron-Env: <PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/lib/oracle/10.2.0.3/client/bin:/root/bin:/usr/local/lib>
X-Cron-Env: <SHELL=/bin/bash>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Date: Wed,  5 Nov 2014 17:04:01 +0800 (CST)
Status: RO

asterisk: error while loading shared libraries: libocilib.so.3: cannot open shared object file: No such file or directory

 

16.查看文件编码

文件编码查看
  1.在Vim中能够直接查看文件编码
  :set fileencoding
  便可显示文件编码格式。
  若是你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你能够在
  ~/.vimrc 文件中添加如下内容:
  set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936
  这样,就可让vim自动识别文件编码(能够自动识别UTF-8或者GBK编码的文件),其实就是依照fileencodings提供的编码列表尝试,若是没有找到合适的编码,就用latin-1(ASCII)编码打开。
  2. enca (若是你的系统中没有安装这个命令,能够用sudo yum install -y enca 安装 )查看文件编码
  $ enca filename
  filename: Universal transformation format 8 bits; UTF-8
  CRLF line terminators
  须要说明一点的是,enca对某些GBK编码的文件识别的不是很好,识别时会出现:
  Unrecognized encoding
    3. file 文件名
文件编码转换
  1.在Vim中直接进行转换文件编码,好比将一个文件转换成utf-8格式
  :set fileencoding=utf-8
  2. enconv 转换文件编码,好比要将一个GBK编码的文件转换成UTF-8编码,操做以下
  enconv -L zh_CN -x UTF-8 filename
  3. iconv 转换,iconv的命令格式以下:
  iconv -f encoding -t encoding inputfile
  好比将一个UTF-8 编码的文件转换成GBK编码
  iconv -f GBK -t UTF-8 file1 -o file2

15.Ring buffer

Ring buffer是整个trace系统使用缓存管理的一种方式, 因为trace可能在内核运行的任什么时候候发生, 这种kernel的不肯定状态决定了ring buffer的写操做中不能有任何引发睡眠的操做, 并且ring buffer的操做频率极高,因此在ring buffer实现里有不少高效的方式来处理多处理器, 读写同步的机制. 理解ring buffer是咱们理解整个kernel trace的基础. 本文分析的源代码版本为linux kernel 2.6.30, 分析的代码基本位于kernel/trace/ring_buffer.c中.另外,为了描述的方便,下文ring buffer用RB来代替.

11.linux主机名

如何修改linux主机名才能生效?

IP地址 主机名/域名 别名
主机名(至关于windows的计算机名)一般在局域网内使用,经过hosts文件,主机名就被解析到对应ip;
域名一般在internet上使用,但若是本机不想使用internet上的域名解析,这时就能够更改hosts文件,加入本身的域名解析


不少人使用hostname 主机名 来修改,其实这个只是作为暂时的,重启后将恢复到原来的名字.
不少人说修改/etc/hosts文件,其实这个文件里的主机名只是为来提供给dns解析的.若是你用不上dns,那修改这个没用.
127.0.0.1     localhost  localhost.localdomain
::1               localhost         localhost6.localdomain6

ip地址 计算机名(主机名)  域名 别名 这是完整的信息

修改/etc/hosts自动生效

只须要修改主机名,实际上是修改这个文件etc/sysconfig/network这个文件里的主机名.
NETWORKING=yes
HOSTNAME=主机名
------------------------------------------------------------------------
记得重启!!!
------------------------------------------------------------------------
完整:
第一步:
#hostname oratest
第二步:
修改/etc/sysconfig/network中的hostname
第三步:
修改/etc/hosts文件

 

[root@rdo ~]# hostname
rdo
[root@rdo ~]# hostname -f
rdo.test.com
要实现上面的这个效果,须要修改两个文件

编辑 /etc/sysconfig/network ,你须要加入一行,记住HOSTNAME,必须大写。好像须要重启计算机生效
# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=rdo
编辑 /etc/hosts,增长一行,即时生效
192.168.178.2   rdo.test.com    rdo

 

主机名,域名,fqdn,url

 

 

10.java环境

JAVA程序的运行必需要安装JAVA RUNTIME ,也就是运行所须要的环境;咱们能够经过安装JRE 或者JDK 所得到;若是咱们只是应用不是开发,只下载JRE 的包就足够;
JDK包里面也包含JRE;本文以JRE的安装为例;JRE中还包括浏览器所须要的JAVA插件;
[root@cache jdk1.6]# tar zxvf jdk1.6.tar.gz
[root@cache jdk1.6]# cd jdk1.6
[root@cache jdk1.6]# cp  -rp jre/ /usr/local/
vi /etc/profile
加入以下3条
JAVA_HOME=/usr/local/jre/
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME
export PATH
export CLASSPATH

source /etc/profile
测试java是否安装成功
[root@cache jre]# java -version
-bash: /usr/local/jre//bin/java: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
一、在64系统里执行32位程序若是出现/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory,安装下glic便可
yum install glibc.i686
二、error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
yum install zlib.i686
而后就成功安装了java环境了

9.文件访问时间

在Linux中,没有文件建立时间的概念。只有文件的访问时间、修改时间、状态改变 时间。也就是说不能知道文件的建立时间。但若是文件建立后就没有修改过,修改时间=建立时间;若是文件建立后,状态就没有改变过,那么状态改变时间=建立 时间;若是文件建立后,没有被读取过,那么访问时间=建立时间,这个基本不太可能。
与文件相关的几个时间:
  一、访问时间,读一次这个文件的内容,这个时间就会更新。好比对这个文件使用more命令。ls、stat命令都不会修改文件的访问时间。
  二、修改时间,对文件内容修改一次,3个时间都会更新。好比:vi后保存文件。ls -l列出的时间就是这个时间。可是经过echo a >>aa 这种方式修改文件,却不会修改访问时间,由于没有访问,就是没有看过文件内容。
  三、状态改变时间。经过chmod命令更改一次文件属性,这个时间就会更新。查看文件的详细的状态、准确的修改时间等,能够经过stat命令 文件名。
  stat temp.c

8.关闭tty

CentOS 6.* 开始 TTY 的配置由 /etc/inittab 更改成 /etc/init/start-ttys.conf,执行如下命令可将默认6个 TTY 改成2个:
找到 tty [1-6] 改为 tty [1-2]:

而后,打开/etc/sysconfig/init文件,找到:
ACTIVE_CONSOLES=/dev/tty[1-6]
修改成:
ACTIVE_CONSOLES=/dev/tty[1-2]
重启生效。

[root@localhost ~]# ps aux|grep tty|grep -v grep
root      1139  0.0  0.1   4064   580 tty1     Ss+  09:52   0:00 /sbin/mingetty /dev/tty1
root      1141  0.0  0.1   4064   580 tty2     Ss+  09:52   0:00 /sbin/mingetty /dev/tty2

6.关闭ipv6

在Linux下确认IPv6是否已经被启用,能够从三个方面肯定。
1.使用ifconfig查看本身的IP地址是否含有IPv6地址。
2.查看服务监听的IP中是否有IPv6格式的地址。(netstat -tuln)
3.使用lsmod查看ipv6的模块是否被加载。
关闭IPV6

 

第一种方法
使用vi编辑器,打开/etc/modprobe.conf,在文档中末尾加入以下的两条:
alias net-pf-10 off
alias ipv6 off
sed -i '$a\alias net-pf-10 off \nalias ipv6 off' /etc/modprobe.d/dist.conf

而后重启电脑

Centos 6 关闭ipv6 在 /etc/modprobe.d/dist.conf增长以下内容
alias net-pf-10 off
alias ipv6 off
此步能够禁止ipv6,但重启网络会提示报错FATAL: Module off not found.
解决方法以下:
1. alias ipv6 off 替换成 options ipv6 disable=1
下面这一步在cs6.5-64-minimal下好像没有用,不用这一步也能够
2. /etc/sysconfig/network 新增以下一行
NETWORKING_IPV6=off
3. 关闭iptables的ipv6

ip -6 addr show ip -4 addr show 第二种方法 vi /etc/modprobe.d/disable-ipv6.conf(名字随便起)(RHEL6.0以后没有了/etc/modprobe.conf这个文件) 输入:install ipv6 /bin/true [root@manager ~]# cd /etc/modprobe.d/ [root@manager modprobe.d]# cat ipv6.conf install ipv6 /bin/true
或者直接在dist.conf最后一行加入上面这行
在cs6.5-64-minimal下好像没有用,不用下面这个也能够 vi /etc/sysconfig/network在最后增长一句:IPV6INIT=no [root@manager ~]# cat /etc/sysconfig/network NETWORKING=yes IPV6INIT=no

 

 

 


保存退出,而且从新启动系统。
重启以后可使用上面的三种方法去验证IPv6支持是否已经被关闭。
开启IPV6
IPv6是默认支持的,因此当你要从新开起IPv6支持时,将/etc/modprobe.conf中的两条指令注释掉就能够了。centos 6.5min-64下是/etc/modprobe.d/dist.conf中修改

不过并不能使得其它程序默认不开启对ipv6的支持

注意:禁用IPV6后,可能会致使某些服务没法启动,好比VSFTP,对于VSFTP,须要修改/etc/vsftpd/vsftpd.conf文件中的listen和listen_ipv6两个选项:
listen=YES
listen_ipv6=NO


lsmod |grep ip
ip6_tables             50177  0
service ip6tables stop
Unloading ip6tables modules:                               [  OK  ]
而后在lsmod|grep ip中见不到ip6了
chkconfig ip6tables --level 35 off
关闭了ipv6 重启也不会再开了

5.linux 输入法

fcitx和scim是目前比较好的输入法, 可是他们的特色不一样,fcitx只能输入中文,而scim能够根据须要,利用不一样的码表达到中英日…等等各类语言的输入问题。若是你只懂中文,或者只会输 入英文&中文,那么fcitx是一个不错的选择,由于它漂亮,小巧,实用。若是你还须要输入日文或者其余语言,那么你因该安装scim。通 过合理的配置,他可以让你像在windows里面同样,想输入什么语言就能输入什么语言,同一种语言想用什么输入法就用什么输入法。Scim的扩充性很 强,并且比较稳定,我就是选择的是scim.
安装一个新输入法前须要哪些准备?
若是你选择fcitx或者scim,那么我建议你删除系统自带的中文输入法。方法以下:
rpm –qa | grep iiimf | xargs rpm –e
rpm –qa | grep Chinput| xargs rpm –e
若是有哪一行提示rpm: no packages given for erase那表示自己你的系统里面没有该输入法,不用担忧,继续往下看就好了。

你们都知道,linux下面比较经常使用的有两个桌面系统,gnome和kde,这都无所谓,他们其实都是架在X系统之上的。简单的说X系统就是一个最核心,也是最底层的桌面系统,gnome也好,kde也罢,或者其余的什么fvwm之类的,都只不过是X系统和用户之间的另外一层软件而已。因此要想达到无论使用什 么桌面系统,都能调入输入法,就是要在X系统启动的时候,让输入法也启动起来,那么这样以后,不管你使用的是gnome仍是kde或者其余什么桌面,都能 够调入输入法。由于当轮到他们启动的时候,X系统已经启动好了,输入法已经被系统调入了。那么X系统又是如何启动的呢?让咱们从startx开始提及。
不管你用什么桌面系统,都是经过startx启动的,那么startx到底是什么呢?一个应用程序仍是一个脚本文件?为何它可以启动各类桌面系统,而且可以按照相应的配置文件来设置呢?带着疑问,我在console里面输入whereis startx.
在 找到了存放startx的路径之后,用编辑器打开它发现原来是一个脚本文件。这个脚本文件的内容可能根据发行版不一样,会有差别,若是你懂一些shell的 语言,那么你能够尝试看看,不必定要所有看懂,可是你大体看过之后会发现最后有一个xinit的命令,而后跟着一些参数。我尝试在console下面输入 xinit(注意,不要在图形界面下作此操做)
发现图形界面启动拉,可是很丑陋,什么功能都没有,鼠标能够动,还有一个能够输入命令的小窗口。怎 么退出来?ctrl+alt+backspace. 原来如此,startx只是一个脚本,里面经过对一系列配置文件的分析设置,最终利用xinit命令启动图形界面。无论是kde仍是gnome,都是在这 个脚本中完成的。那么让咱们再打开startx脚本看看里面还作了些什么。你仔细看看,会发现有一个东西很显眼,就是/etc/X11/xinit /xinitrc,这个xinitrc好像很眼熟,在配置输入法的其余贴中老是看到,这里出现了确定是里面运行了这个脚本。再看其余的一些东西,其实都是利用shell配置出一个xinit启动的参数,用来配置桌面系统用的,不用管它。目前已知的就是startx的时候它会去执行一个/etc/X11 /xinit/xinitrc的脚本,让咱们打开来看看里面有什么。
打开一看,其中一段我以为最有价值,是一个for循环,他依次执行了/etc /X11/xinit/xinitrc.d/下面的全部脚本。你能够耐心的找一下,必定能够发现。那么这个目录里面有些什么内容呢?有一个文件看名字就知道和输入相关,他叫xinput。等等,让咱们理一下,是怎么从startx到xinput的。
首先是执行startx这个脚本文件,里面他会执行xinitrc这个脚本,而后xinitrc脚本里面的,叫xinput。OK, 咱们继续,打开xinput看看。

4.linux下文件及目录排序问题

1.默认ls按照文件名排序,先大写再小写
2.按大小排序
du -ab --max-depth=1|sort -n 以字节从小到大排序查询当前目录下的子目录与文件
3.按时间排序
ls -alt # 按修改时间排序
ls -alrt # 按修改时间反向排序
首先,ls --help查看ls相关的与时间排序相关的参数:
> ls --help|grep -E "time|sort"
若是不指定 -cftuSUX 或 --sort 任何一个选项,则根据字母大小排序。
  -c                         配合 -lt:根据 ctime 排序及显示 ctime (文件
                               配合 -l:显示 ctime 但根据名称排序
                               不然:根据 ctime 排序
  -f                         do not sort, enable -aU, disable -lst
      --full-time            like -l --time-style=full-iso
  -r, --reverse              reverse order while sorting
  -S                         sort by file size
      --sort=WORD            extension -X, none -U, size -S, time -t,
                             version -v, status -c, time -t, atime -u,
      --time=WORD            with -l, show time as WORD instead of modification
                             time: atime, access, use, ctime or status; use
                             specified time as sort key if --sort=time
      --time-style=STYLE     with -l, show times using style STYLE:
  -t                         sort by modification time
能够看到-c按建立时间ctime排序,-t按修改时间mtime排序,默认都是将最近的文件排在前面,
-r能够实现逆序排序,即将最近的文件排在后面,--sort=WORD可订制排序键值。
 
经常使用组合以下:
> ls -alt # 按修改时间排序
> ls --sort=time -la # 等价于> ls -alt
> ls -alc # 按建立时间排序
> ls -alu # 按访问时间排序
# 以上都可使用-r实现逆序排序
> ls -alrt # 按修改时间排序
> ls --sort=time -lra # 等价于> ls -alrt
> ls -alrc # 按建立时间排序
> ls -alru # 按访问时间排序
# 也能够查找指定类型的文件,而后指定按时间排序
> find . -name *.php|xargs ls -alt

3.Linux下which、whereis、locate、find 命令的区别

which是经过 PATH环境变量到该路径内查找可执行文件,因此基本的功能是寻找可执行文件
[root@localhost /]# whereis ls
ls: /bin/ls /usr/share/man/man1p/ls.1p.gz /usr/share/man/man1/ls.1.gz
将和ls文件相关的文件都查找出来,或者只找二进制(-b选项),源码(-s选项)等
whereis查找的速度很是快,这是由于linux系统会将系统内的全部文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,经过遍历整个文件系统来查找,效率天然会很高。但该数据库并不实时更新,是按期的
locate查找包含特定模式的路径名

[root@localhost mlocate]# locate --statistics
Database /var/lib/mlocate/mlocate.db:
        3,379 directories
        28,041 files
        1,308,211 bytes in file names
        564,520 bytes used to store database
locate命令实际上是“find -name”的另外一种写法,可是要比后者快得多,缘由在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含 有本地全部文件信息。Linux系统自动建立这个数据库,而且天天自动更新一次,因此使用locate命令查不到最新变更过的文件。为了不这种状况,可 以在使用locate以前,先使用updatedb命令,手动更新数据库。
type命令其实不能算查找命令,它是用来区分某个命令究竟是由shell自带的,仍是由shell外部的独立二进制文件提供的。若是一个命令是外部命令,那么使用-p参数,会显示该命令的路径,至关于which命令。
find遍历整个文件系统来查找

2./dev/shm

Linux默认(CentOS)/dev/shm分区的大小是系统物理内存的50%, 虽然说使用/dev/shm对文件操做的效率会高不少,
可是目前各发行软件中却不多有使用它的(除了前面提到的Oracle), 能够经过ls /dev/shm查看下面是否有文件, 若是没有就说明当前系统并无使用该设备.

1.Error, some other host already uses address

事件:
     今天帮客户重装完系统后,刚开始网络是正常的,IP是在安装的过程当中配置好。但修改ifcfg-eth0文件后重启网络服务时,就出现"Error, some other host already uses address"的报错,而且网络不通。尝试过多种方法,包括从新安装系统,最终问题仍是同样。
解决方法以下:
     vi /etc/sysconfig/network-scripts/ifup-eth
         注解掉下面的几行内容,而后再执行service network restart
    #if ! /sbin/arping -q -c 2 -w 3 -D -I ${REALDEVICE} ${IPADDR} ; then  
    #   echo {1}quot;Error, some other host already uses address ${IPADDR}."  
    #   exit 1  
    #fi 

通常的Linux发行版默认的终端都是16色的,但事实上几乎全部的终端都支持256色终端。只须要把环境变量TERM设 为xterm-256color(xterm算是终端模拟器的一个标准,Gnome Terminal用gnome-256color,Konsole能够用konsole-256color)。

相关文章
相关标签/搜索