全部博文(1015)
分类: LINUX
2012-09-19 12:29:40
#cp /usr/local/sbin/keepalived /usr/sbin/
#service keepalived start|stop #做成系统启动服务方便管理.
su配置ssh权限
ctrl+l:清屏
修改tcp的 time wait生效
/sbin/sysctl -p
#ldconfig -p
#vim /etc/ld.so.conf
include ld.so.conf.d/*.conf
mysql函数库加入到缓存当中
#vim /etc/ld.so.conf.d/mysql-x86_64.conf
/usr/lib64/mysql
#ldd /usr/bin/passwd 找出passwd这个文件的函数库数据
#ldd -v /lib/libc.so.6 找出libc.so.6这个函数的相关其他函数库
#netstat -tulpn 系统开启的网络服务
n表示port number
#netstat -lnp 有监听的网络的服务
#service --status-all 查看所有服务状态
test.sh
version=$(uname -r)
echo $version
test.sh
var="lang is $LANG"
echo $var
path="test"
path=${path}"sss"
或者path=${path}sss
或者path="$path"sss
单引号和双引号对变量不同
# cc="/var/www/html/yii/build/logs/"
# cd $cc
ls -l | grep ^[^d] 命令得到如下结果:
-rw-r--r-- 1 junfeng junfeng 103 2009-11-26 13:35 CMakeLists.txt
现在目录被过滤掉了。grep ^[^d]中,^[^d] 是一个正则表达式,[^d]表示字符串以d开头,^[^d]表示不以d开头。
bin/php -i | grep Configure 查看php的config参数
service rpcbind start
#service portmap start
#mount 192.168.1.216:/mnt /mnt
--------------根目录占用最多/dev/sda1
cd /,然后du -sh *,会列出每个目录的大小,找出占用最大,进入该目录,
再执行du -sh *,以此类推,就能找到哪个文件占用的多,看是否需要删除
---------------检查网卡是否生效
netstat -rn
route -n
---------------修改history 记录数
vim /ert/profile
histsize=1000
不重启生效:source /etc/profile
--------------------
/etc/selinux/config disabled 关闭
setenforece 0 设置为permissive 关闭
service iptables stop
chkconfig iptables off
-------------------
pgrep nginx
所有进程号
killall nginx
---------------------------------- 显示系统中所有进程的全面信息:
# ps -ef
显示所有终端上所有用户的有关进程的所有信息:
# ps -aux
#ps -ef|grep 2497
# lsof | grep mysql | wc -l
204
#/usr/local/mysql/bin/mysqladmin -h 192.168.1.77 -ureplication -p123456 -P 3301 -S /data/mysql/mysql_3301/mysql_3301.sock status
Uptime: 16070 Threads: 212 Questions: 67713988 Slow queries: 1096 Opens: 2557105 Flush tables: 1 Open tables: 256 Queries per second avg: 4213.689
# linux 下 取进程占用 cpu 最高的前10个进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
# linux 下 取进程占用内存(MEM)最高的前10个进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
获得MySQL/PostgreSQL在GNU/Linux和FreeBSD下的内存占用比例:
GNU/Linux系统
MySQL
ps -o pmem,comm ax | grep mysql | awk '{SUM+=$1}END{print SUM}'
PostgreSQL
ps -o pmem,comm ax | grep postgre | awk '{SUM+=$1}END{print SUM}'
FreeBSD系统
MySQL
ps -o pmem,comm -wuax | grep mysql | awk '{SUM+=$1}END{print SUM}'
PostgreSQL
ps -o pmem,comm -wuax | grep postgre | awk '{SUM+=$1}END{print SUM}'
--------------------------------- gdb 能够调试pid对应的程序
# gdb -p 1726
GNU gdb (GDB) Red Hat Enterprise Linux (7.1-29.el6)
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<
Attaching to process 1726
Reading symbols from /usr/local/php/sbin/php-fpm...done.
Reading symbols from /lib64/libcrypt.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/libcrypt.so.1
Reading symbols from /usr/local/lib/libc-client.so.2007...Missing separate debuginfo for /usr/local/lib/libc-client.so.2007
Try: yum --disablerepo='*' --enablerepo='*-debuginfo' install /usr/lib/debug/.build-id/6a/ff4559a0cc30c98600004243ba563784b9a9a2.debug
(no debugging symbols found)...done.
Loaded symbols for /usr/local/lib/libc-client.so.2007
Reading symbols from /lib64/libz.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/libz.so.1
。。。。
Reading symbols from /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/xhprof.so...done.
Loaded symbols for /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/xhprof.so
Reading symbols from /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/apc.so...done.
Loaded symbols for /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/apc.so
Reading symbols from /lib64/libnss_files.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/libnss_files.so.2
Reading symbols from /lib64/libnss_dns.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/libnss_dns.so.2
0x00000035058e20e0 in __accept_nocancel () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install audit-libs-2.0.4-1.el6.x86_64 cyrus-sasl-lib-2.1.23-8.el6.x86_64 freetype-2.3.11-5.el6.x86_64 glibc-2.12-1.7.el6.x86_64 keyutils-libs-1.4-1.el6.x86_64 krb5-libs-1.8.2-3.el6.x86_64 libcom_err-1.41.12-3.el6.x86_64 libcurl-7.19.7-16.el6.x86_64 libidn-1.18-2.el6.x86_64 libjpeg-6b-46.el6.x86_64 libpng-1.2.44-1.el6.x86_64 libselinux-2.0.94-2.el6.x86_64 libssh2-1.2.2-7.el6.x86_64 libxml2-2.7.6-1.el6.x86_64 nspr-4.8.6-1.el6.x86_64 nss-3.12.7-2.el6.x86_64 nss-softokn-freebl-3.12.7-1.1.el6.x86_64 nss-util-3.12.7-1.el6.x86_64 openldap-2.4.19-15.el6.x86_64 openssl-1.0.0-4.el6.x86_64 pam-1.1.1-4.el6.x86_64 zlib-1.2.3-25.el6.x86_64
---------------------------------- test 文件运算符
$rev_file="$cur_path/svn_klc.log"
test -f "$rev_file" && latest_rev=`cat $rev_file`
利用这些运算符,您可以在程序中根据对文件类型的评估结果执行不同的操作:
-b file 如果文件为一个块特殊文件,则为真
-c file 如果文件为一个字符特殊文件,则为真
-d file 如果文件为一个目录,则为真
-e file 如果文件存在,则为真
-f file 如果文件为一个普通文件,则为真
-g file 如果设置了文件的 SGID 位,则为真
-G file 如果文件存在且归该组所有,则为真
-k file 如果设置了文件的粘着位,则为真
-O file 如果文件存在并且归该用户所有,则为真
-p file 如果文件为一个命名管道,则为真
-r file 如果文件可读,则为真
-s file 如果文件的长度不为零,则为真
-S file 如果文件为一个套接字特殊文件,则为真
-t fd 如果 fd 是一个与终端相连的打开的文件描述符(fd 默认为 1),则为真
-u file 如果设置了文件的 SUID 位,则为真
-w file 如果文件可写,则为真
-x file 如果文件可执行,则为真
------------------------------- nohup
nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。
该命令的一般形式为:nohup command &
如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:
nohup command > myout.file 2>&1 &
使用 jobs 查看任务。
使用 fg %n 关闭。
------------------------------- head tail
head命令是用来查看具体文件的前面几行的内容,具体格式如下:
head
你可以通过head命令查看具体文件最初的几行内容,该命令默认是前10行内容,如果你想查看前面更多内容,你可以通过一个数字选项来设置,例如
head -20 install.log
通过上面命令你可以查看install.log这个文件前面20行的内容
与head命令相反,tail命令是用来查看具体文件后面几行的内容,默认情况下,是查看该文件尾10行的内容,同样,如果想查看后面更多内容,也是通过数字选项来设置,例如
tail -20 install.log
你还可以使用 tail 来观察日志文件被更新的过程。使用 -f 选项,tail 会自动实时
地把打开文件中的新消息显示到屏幕上。例如,要即时观察 /var/log/messages的变化,以根用户身份在 shell 提示
下键入以下命令:
tail -f /var/log/messages
------------------------- cat
Cat file1 >> file2 将file1的内容追加到file2尾部
Cat file1 file2 > file3 将文件file1和file2合成为file3
Cat file1 file2 根据次序显示file1和file2的内容
-----------------------后台运行和守护进程的区别
后台的文件描述符也是继承于父进程,例如shell,所以它也可以在当前终端下显示输出数据。
但是daemon进程自己变成了进程组长,其文件描述符号和控制终端没有关联,是控制台无关的。
基本上任何一个程序都可以后台运行,但守护进程是具有特殊要求的程序,比如要脱离自己的父进程,成为自己的会话组长等,这些要在代码中显式地写出来
换句话说,守护进程肯定是后台进程,但反之不成立。守护进程顾名思义,主要用于一些长期运行,守护着自己的职责(监听端口,监听服务等)。我们的系统下就有很多守护进程。
很多系统服务名字后面带个d,就是daemon、守护的意思
--------------------- 查看服务器重启日志
last reboot
-------------------------boost安装
./bootstrap.sh
./bjam --layout=system install
-------------------------- man help
mv --help | grep v
hphp | grep cluster-count
man scp | grep r
:q或者直接输入q 退出man
------------------------- yum挂载光盘
service rpcbind start
#service portmap start
#mount 192.168.1.216:/mnt /mnt
#mount -l
# ll /mnt/
total 44
drwxr-xr-x 2 root root 4096 Aug 15 10:41 file
-rwxr-xr-x 1 root root 1280 Apr 29 13:56 install.sh
drwxr-xr-x 2 root root 4096 May 25 12:09 iso
drwx------ 2 root root 4096 Aug 9 11:21 lost+found
drwxr-xr-x 4 root root 4096 May 10 14:26 nagios
-rwxr-xr-x 1 root root 259 Jun 24 10:22 proxy.sh
drwxr-xr-x 8 root root 4096 May 3 14:29 rhel54_64
drwxr-xr-x 8 root root 4096 May 3 11:04 rhel54_i386
dr-xr-xr-x 9 root root 4096 May 25 14:54 rhel6_32
dr-xr-xr-x 11 root root 4096 May 25 12:08 rhel6_64
dr-xr-xr-x 5 root root 4096 May 18 09:27 xs-tools
#vim /etc/yum.repos.d/myyum.repo
[Cluster]
name=Cluster Directory
baseurl=file:///mnt/rhel54_64/Cluster
enabled=1
gpgcheck=0
[ClusterStorage]
name=ClusterStorage Directory
baseurl=file:///mnt/rhel54_64/ClusterStorage
enabled=1
gpgcheck=0
[Server]
name=Server Directory
baseurl=file:///mnt/rhel54_64/Server
enabled=1
gpgcheck=0
[VT]
name=VT Directory
baseurl=file:///mnt/rhel54_64/VT
enabled=1
gpgcheck=0
-------------------------df
是来自于coreutils 软件包,系统安装时,就自带的;我们通过这个命令可以查看磁盘的使用情况以及文件系统被挂载的位置;
df -m
[root@localhost beinan]# df -lh
Filesystem 容量 已用 可用 已用% 挂载点
/dev/hda8 11G 6.0G 4.4G 58% /
/dev/shm 236M 0 236M 0% /dev/shm
/dev/sda1 56G 22G 35G 39% /mnt/sda1
我们从中可以看到,系统安装在/dev/hda8 ;还有一个56G的磁盘分区/dev/sda1挂载在 /mnt/sda1中;
-----------------------LINUX是32位还是64位
#uname -a
Linux 2.6.18-164.10.1.el5xen #1 SMP Thu Jan 7 20:28:30 EST 2010 x86_64 x86_64 x86_64 GNU/Linux
i386就是32位的,x86_64就是64位的
#file /sbin/init
/sbin/init: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
-----------------------CentOS 开机不启动GNOME桌面环境
如果用CentOS作为Web服务器的话,没有必要启动GNOME的桌面环境,可以通过以下方式配置:
vi /etc/inittab
找到其中的 id:5:initdefault 修改成 id:3:initdefault 即可
------------------------启用网卡 ifup eth1
vim /etc/sysconfig/network-scripts/ifcfg-eth1:0
# Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet
DEVICE=eth1:0
BOOTPROTO=none
HWADDR=14:fe:b5:d0:f3:8a
ONBOOT=yes //启动自动加载
DHCP_HOSTNAME=***
TYPE=Ethernet
IPADDR=***
NETMASK=255.255.255.224
------------------------------------修改hostname
如果要永久修改RedHat的hostname,就修改/etc/sysconfig/network文件,将里面的HOSTNAME这
一行修改成HOSTNAME=web131,其中NEWNAME就是你要设置的hostname。
Debian发行版的hostname的配置文件是/etc/hostname。
修该配置文件后,重启系统就会读取配置文件设置新的hostname。
hostname与/etc/hosts的关系
很过人一提到更改hostname首先就想到修改/etc/hosts文件,
认为hostname的配置文件就是/etc/hosts。其实不是的。
127.0.0.1到localhost这一条建议不要修改,因为很多应用程序会用到这个,比如sendmail,修改之后这些程序可能就无法正常运行。
127.0.0.1 web131 localhost.localdomain localhos
----------------------------------时区和时间
一、时区
1. 查看当前时区
date -R
2. 修改设置时区
方法(1)
tzselect
方法(2) 仅限于RedHat Linux 和 CentOS
timeconfig
方法(3) 适用于Debian
dpkg-reconfigure tzdata
设置时间和日期
将系统日期设定成1996年6月10日的命令
date -s 03/15/2011
将系统时间设定成下午1点52分0秒的命令
date -s 12:00:00
3. 将当前时间和日期写入BIOS,避免重启后失效
hwclock -w
-------------修改服务器hostname
查看hostname
uname -a
hostname
#vim /etc/hosts
127.0.0.1 jushanweb1 localhost.localdomain localhost
hosts文件格式是一行一条记录,分别是IP地址 hostname aliases,三者用空白字符分隔,aliases可选。
127.0.0.1到localhost这一条建议不要修改,因为很多应用程序会用到这个,比如sendmail,修改之后这些程序可能就无法正常运行。
#vim /etc/sysconfig/network
HOSTNAME=jushanweb1
重启
-----------
编辑开机rc.local文件
#vi /etc/rc.local
命令启动目录
/etc/init.d/
------------------------ You have new mail in /var/spool/mail/root
tail -n 10 /var/log/messages
------------------------------------top
top -n 1显示后退出
top -n 1 |grep Cpu
top -n 1 |grep Cpu | cut -d "," -f 1 | cut -d ":" -f 2
top -n 1 |grep Mem
top -n 1 |grep Mem | cut -d "," -f 1 | cut -d ":" -f 2 2066240k total
top -n 1 |grep Mem | cut -d "," -f 2 1585676k used
-----------------scp 推送/拉取 文件
拉取
scp -r -P 38332 root@IP:/backup/data/test.sql /tmp/
设要把 A上的 /root/abc.zip 传到 B机并放到/abc目录,可以在A机上用命令
scp /root/abc.zip root@192.168.1.102:/abc/
若 SSH端口不是默认的22,比如,是端口1234 则加-P参数:
scp -P 1234 /root/abc.zip root@192.168.1.102:/abc/
目录下所有文件
scp -rp /usr/local/bocai_home/web_app/bcwwnimda2/fckeditor/ logger@192.168.0.29:/usr/local/bocai_home/web_app/bcwwnimda2/fckeditor/
选项如下:
-1 强制scp 用协议1
-2 强制scp 用协议2
-4 强制scp用IPV4的网址
-6 强制scp用IPV6的网址
-B 选择批处理模式(防止输入密码)
-C 允许压缩。 标注-C到ssh(1)来允许压缩
-c cipher
选择cipher来加密数据传输。这个选项直接传递到ssh(1)
-F ssh_config
设定一个可变动的用户配置给ssh.这个选项直接会被传递到ssh(1)
-i identity_file
选择被RSA认证读取私有密码的文件。这个选项可以直接被传递到ssh(1)
-l limit
限制传输带宽,也就是速度 用Kbit/s的速度
-o ssh_option
可以把ssh_config中的配置格式传到ssh中。这种模式对于说明没有独立的scp文件中断符的scp很有帮助。关于选项的如下。而他们的值请参看ssh_config(5)
-P port
指定连接远程连接端口。注意这个选项需要写成大写的模式。因为-p已经早保留了次数和模式
-S program
指定一个加密程序。这个程序必须可读所有ssh(1)的选项。
-p 指定修改次数,连接次数,还有对于原文件的模式
-q 把进度参数关掉
-r 递归的复制整个文件夹
-S program
指定一个加密程序。这个程序必须可读所有ssh(1)的选项。
-V 冗余模式。 让 scp 和 ssh(1) 打印他们的排错信息, 这个在排错连接,认证,和配置中非常有用。
----------------------------history
history | more
n 最后n个指令 history 10
-c 清空
-----------------file
file filename
================
设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stuxx,其中xx从01到30。
参考答案:
#!/bin/sh
i=1
groupadd class1
while [ $i -le 30 ]
do
if [ $i -le 9 ] ;then
USERNAME=stu0${i}
else
USERNAME=stu${i}
fi
useradd $USERNAME
mkdir /home/$USERNAME
chown -R $USERNAME /home/$USERNAME
chgrp -R class1 /home/$USERNAME
i=$(($i+1))
done
catfile|more 显示文件的内容并传输到more程序实现分页显示,使用命令lessfile可实现相同的功能
more 分页命令,一般通过管道将内容传给它,如ls|more
./configure --help | more
查看系统信息
cat /proc/cpuinfo - CPU (i.e. vendor, Mhz, flags like mmx)
cat /proc/interrupts - 中断
cat /proc/ioports - 设备IO端口
cat /proc/meminfo - 内存信息(i.e. mem used, free, swap size)
cat /proc/partitions - 所有设备的所有分区
cat /proc/pci - PCI设备的信息
cat /proc/swaps - 所有Swap分区的信息
cat /proc/version - Linux的版本号 相当于 uname -r
uname -a - 看系统内核等信息
-----如何定制linux启动时启动的服务?
在控制台或终端下运行ntsysv,然后把要启动的服务选上,如果要开机不启动某个那就把他的选中去掉。
在Linux下如何解压RAR文件(hmkart)
下载RAR for Linux 3.2.0,解压揭开后make
然后可以用unrar e youfilename.rar解压rar文件
如何清空一个文件()
#cat /dev/null > filename
安装中文字体(hehhb)
先下载 ~George/sm.sh
(参考文献: )
SimSun18030.ttc在微软网站可下载,
030.asp 它是个msi文件,在 mswindows中安装用的,装好后在windows目录下的fonts
目录里面就可以找到它。把simsun.ttc,SimSun18030.ttc,tahoma.ttf,tahomabd.ttf
拷贝到/usr/local/temp,然后下载的shell文件也放到这个目录里,然后打开终端
cd /usr/local/temp
chmod 755 sm.sh
./sm.sh
不让普通用户自己改密码(myxfc)
[root@xin_fc etc]# chmod 511 /usr/bin/passwd
又想让普通用户自己改密码
[root@xin_fc etc]# chmod 4511 /usr/bin/passwd
在多级目录中查找某个文件的方法(青海湖)
find /dir -name filename.ext
du -a | grep filename.ext
locate filename.ext
解压小全
tar xvfj example.tar.bz2
tar xvfz example.tar.gz
tar xvfz example.tgz
tar xvf example.tar
unzip example.zip
linux怎么用这么多内存
为了提高系统性能和不浪费内存,linux把多的内存做了cache,以提高io速度
make clean
cd -
/bin:存放最常用命令;
/boot:启动Linux的核心文件;
/dev:设备文件;
/etc:存放各种配置文件;
/home:用户主目录;
/lib:系统最基本的动态链接共享库;
/mnt:一般是空的,用来临时挂载别的文件系统;
/proc:虚拟目录,是内存的映射;
/sbin:系统管理员命令存放目录;
/usr:最大的目录,存许应用程序和文件;
/usr/X11R6:X-Window目录;
/usr/src:Linux源代码;
/usr/include:系统头文件;
/usr/lib:存放常用动态链接共享库、静态档案库;
/usr/bin、/usr/sbin:这是对/bin、/sbin的一个补充;
----------------------服务器性能监控 vmstat mpstat iostat
vmstat 5 10 cpu总的性能
kthr:内核线程状态在采样间隔期间每秒钟更改一次。
r :置于运行队列中的内核线程数目。
b :置于等待队列(等待资源、等待输入/输出)的内核线程数目。
内存:关于使用虚拟内存和实内存的信息。如果虚拟页已经被访问的话,虚拟页可以被认为是活动的。一页为 4096 个字节。
avm: 活动虚拟页。
fre :空闲列表的大小。
注:大部分实内存都用作文件系统数据的高速缓存。对于保持较小的空闲列表,这是很正常的。
页:关于缺页故障和调页活动的信息。这些是间隔的平均值,以秒为单位给出。
re :页面调度程序输入/输出列表。
pi :从调页空间调度进的页面。
po: 调出到调页空间的页面。
fr :释放的页(页面替换)。
sr: 通过页替换算法扫描的页面。
cy :按页替换算法的时钟周期。
故障:采样间隔平均每秒的捕获和中断率。
in :设备中断
sy :系统调用。
cs :内核线程上下文切换。
Cpu:CPU 使用时间故障百分比。
us :用户时间。
sy :系统时间。
id :CPU 空闲时间。
wa :CPU 空闲时间,在此期间系统有未完成的磁盘/NFS I/O 请求。请参阅上面的详细描述。
mpstat 2 2为cpu号码
---------iostat -t -d -k 5 (yum install sysstat.i386)
标志
-a 显示适配器吞吐量报告。
-d -d 标志不能和 -t 标志合用,且仅显示磁盘使用率报告。
-s 显示系统吞吐量报告。
-m -m 标志将为以下打印路径统计信息
* 到启用 MPIO(Multi-Path I/O)设备的路径。
* ESS 机器中的路径。
吞吐量是每个设备的。设备所有路径的吞吐量符合该设备的吞吐量。
对于 ESS 机器,vpaths 将被当作磁盘,而 hdisks 将被看作路径。在内部 vpaths 是磁盘,hdisks 是它们的路径。对于启用 MPIO 的设备,路径名将表示为 Path0、Path1、Path2 等等。数字0、1、2 等都是 lspath 命令提供的路径标识。由于一个设备的路径可以附加到任何适配器上,所以适配器报告将报告每个适配器下的路径信息。磁盘名称是所有路径的前缀。对于所有启用 MPIO 的设备,适配器报告将打印路径名为 hdisk10_Path0 、hdisk0_Path1等等。对于所有 ESS 机器,适配器报告将打印路径名为 vpath0_hdisk3 、vpath10_hdisk25等等。
-t -t 标志排除了 -d 标志且仅显示了 tty 和 cpu 用法报告。
-T 打印 iostat输出的每一行边上的时间戳记。时间戳记以 HH:MM:SS 格式显示。
tin 显示了系统为所有 tty 读取的字符总数。
tout 显示了系统为所有 tty 写入的字符总数。
% user 显示了在用户级(应用程序)执行时产生的 CPU 使用率百分比。
% sys 显示了在系统级(内核)执行时产生的 CPU 使用率百分比。
% idle 显示了在 CPU 空闲并且系统没有未完成的磁盘 I/O 请求时的时间百分比。
% iowait 显示了 CPU 空闲期间系统有未完成的磁盘 I/O 请求时的时间百分比。
----------------------- umask 权限掩码
默认 umask 0022
文件 0666
文件夹 0777
=》
0666-0022 = 0644
0777-0022 = 0755
#umask 0002 修改默认权限掩码
=>
0666-0002 = 0664
0777-0002 = 0775
----------------------查看目录大小 df du
#df -h 查询磁盘信息,以M和G的格式显示
#du -sh kushu001/ 查看当前目录下目录的大小,并不想看其他目录以及其子目录
16G kushu001/
#du -s kushu001/
16399552 kushu001/
#du -h .
查看当前目录下所有目录以及子目录的大小(会列出所有的子目录),“.”代表当前目录下。也可以换成一个明确的路径
#du -ah user 会列出每个目录和每个文件
列出user目录及其子目录下所有目录和文件的大小
#fdisk -l
查询磁盘信息
-----------------------------------------系统运行时间 uptime
uptime命令显示系统已经运行了多长时间,它依次显示下列信息:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1 min、6 min和8 min内的平均负载
或者last|grep "system boot"|head -n 1
-----------------------------------------索引节点(i节点) 进行删除
可以使用 索引节点(i节点) 进行删除
得到i节点为 51665
通过find命令删除i节点为51665的文件
-----------------------------------------selinux
/etc/selinux/config
-----------------------------------------mount
mount /dev/hda4 /users
由/dev/hda4表示的文件系统安装到路径users 下,随后可以使用ls /users来查看这个文件系统的内容,不能再使用ls /dev/hda4来访问
取消挂载
umount /users
umount /mnt
umount -l /mnt
-----------------------------------------关机 重启
shutdown -h now
shutdown -h +15 "going down for emergency disk repair."
shutdown -h 09:30 "go....."
-------重启
shutdown -r 0
reboot -f
init 6
----关机
shutdown -h 0
half -f
init 0
-----------------------------------------查找相关命令是否已经在搜索路径中 which whereis locate
#which gcc
/usr/bin/which: no gcc in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/centos/bin:/sbin:/usr/sbin:/usr/local/sbin:/usr/kerberos/sbin)
如果 which没有找到的命令,那么试试whereis
[root@localhost centos]# whereis gcc
gcc: /usr/libexec/gcc
还可以使用locate,它搜索的并不特定于命令或软件包,而是能够找到任何类型的文件
[root@localhost centos]# locate signal.h
/usr/share/man/man0p/signal.h.0p.gz
-----------------------------------------显示网络流量
watch -n 1 "/sbin/ifconfig eth0 | grep bytes"
------------------------------------------查看内存使用情况free
http://zhengdl126.iteye.com/blog/1144600------------------------------------------查看CPU使用情况的命令
每5秒刷新一次,最右侧有CPU的占用率的数据
$ vmstat 5
------------------------------------------磁盘的IO性能
Linux下的iostat命令
iostat -d -k -t 2
每隔2秒统计一次磁盘IO信息,直到按 Ctrl+C终止程序,-d 选项表示统计磁盘信息, -k 表示以每秒KB的形式显示,-t 要求打印出时间信息,2 表示每隔 2 秒输出一次。第一次输出的磁盘IO负载状况提供了关于自从系统启动以来的统计信息。随后的每一次输出则是每个间隔之间的平均IO负载状况。
运行该命令后,输出:
Linux 2.6.9-67.0.7.ELsmp (localhost.localdomain) 11/19/2008
Time: 03:15:25 PM
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 3.53 26.66 54.76 30122033 61864280
sda1 0.51 1.07 1.73 1207649 1949740
sda2 0.00 0.00 0.00 538 256
sda3 13.84 25.59 53.03 28913291 59914092
Time: 03:15:27 PM
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 275.38 0.00 1738.69 0 3460
sda1 14.57 0.00 58.29 0 116
sda2 0.00 0.00 0.00 0 0
sda3 419.60 0.00 1678.39 0 3340
...
每次输出都会打印时间信息, 接下来显示磁盘IO情况列表。
Device: 显示磁盘名称
tps: 表示每秒钟输出到物理磁盘的传输次数。一次传输就是一个对物理磁盘的 I/O 请求。多个逻辑请求可被并为对磁盘的一个单一 I/O 请求。传输具有中等的大小。
kB_read/s: 每秒从磁盘读取的数据量,单位为KB。
kB_wrtn/s: 每秒从写入磁盘的数据量,单位为KB。
Kb_read: 读取的 KB 总数。
Kb_wrtn: 写入的 KB 总数。
------------------------------------------linxu 文件夹 权限 chmod chown
drwxr-xr-x 中的第一位(左数)表示当前目录是目录还是文件,d表示目录,-表示普通文件.
后面9位分为3组,每3组作为1组,从左到右分别表示文件属主,文件属组,和其他所有用户的权限.
r表示文件可读,w表示文件可写,x表示文件可以执行.
chown chmod -R 递归更新目录权限
用命令chmod改变文件权限.有两种
第一种
chmod (ugoa) (=-+) (rwx) file
u代表文件属主,g代表文件属组,o代表系统中除属主和属组成员之外的其他用户,a代表所有用户(u,g,o)总和
+代表增加相应的权限,-代表减少相应的权限,=代表只有相应的权限
chmod g-w file就可以完成上面那个文件的权限改正.
第二种
用数字改正,r为4,w为2,x为1
把数字相加就是所对应的权限,不如rwx就是7,rw就是6
改正上面问题的权限方法为
chmod 775 file 就行了
chown user:group
#chown -R matt:staff ./mattt
u 所有者
g 属组
o 其他用户
a 所有用户
u+x 所有用户增加执行权限
o-w 其他用户取消写入权限
o=- 其他用户取消所有权限
-------------------------------------------ls getfacl
getfacl 可显示一个文件当前的acl
#getfacl ./
ls -lih 所有文件和目录
ls -lih /home/web/limebook/*
ls -ld uploadfile/ 指定文件的属性
ls -l xxx.xxx 查看文件权限
ls -la |wc -l
应该减三,因为ls -la会显示"."和".."两个目录,并且-l会产生
total信息,故应该减三。
ls -l|wc -l
ls | egrep '[0-9]{2}' 显示带数字的目录和文件
ls | egrep '^[0-9]{2}/$'
只显示目录名
ls -l | grep ^d
只显示文件
ls -l | grep ^-
只显示文件名
ls -l | grep ^f
统计当能目录下的文件数
ls -l | grep ^- | wc -l
df -h 查看磁盘空间
mv 可以移动一个文件(或目录)到另一个文件(或目录),如果文件(或目录)不存在,则创建它。其实mv 这个过程也可以理解为改名过程
,所以说mv工具能修改文件名和目录名。
file *.* 查看文件类型
//cp整个目录但是不包含其中某个目录
#cp -r `find /tmp/test -type d -path /tmp/test/c -prune -o -print |sed 1d ` /tmp/test2
-----------------------------------------------------------cd
cd .. 返回上级目录
cd ../.. 进入上二级目录
cd - 返回上一次进入的目录
cd 进入用户自己的主目录
cd ~ 进入用户自己的主目录
---------------------------------------------------------tail
tail 命令从指定点开始将 File 参数指定的文件写到标准输出。
tail -f 命令可用于监视另一个进程正在写入的文件的增长。
[root@xiegh-yangb ~]# tail -f /var/log/httpd/error_log
----------------------------------------------------------cp
cp -r limebook limebook_6.3
cp -rf mysqlse ../mysql-5.1.26-rc/storage/sphinx
- f 删除已经存在的目标文件而不提示。
- i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。
- p 此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。
- r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。
-a 尽可能将档案状态、权限等资料都照原状予以复制。
linux cp时总询问是否覆盖,怎样让它不询问直接覆盖?
有两个方法可以解决此问题:
1、.bashrc里面注释掉 Alias cp='cp -i'
2、使用 \cp 命令(在cp前加一个'\')
-------------cp整个目录但是不包含其中某个目录
/tmp/test
/a
/b
/c
/d
我想拷贝整个test目录,但是不包括下面的c目录,该怎么写啊?
#cd /tmp
#mkdir test2
#cp -r `find /tmp/test -type d -path /tmp/test/c -prune -o -print |sed 1d ` /tmp/test2
-------------------------------------------------------rm
rm -rf 目录 遍历删除
----------------------------------------------------------netstat网络统计信息
-a 显示所有socket,包括正在监听的,列出所有主动监听的端口。
-c 每隔1秒就重新显示一遍,直到用户中断它。
-i 显示所有网络接口的信息,格式同“ifconfig -e”。
-n 以网络IP地址代替名称,显示出网络连接情形,获得数字地址和端口号。
-r 显示核心路由表,格式同“route -e”。
-t 显示TCP协议的连接情况。
-u 显示UDP协议的连接情况。
-v 显示正在进行的工作。
-p 每个监听端口相关联的特定进程
netstat -i -e 显示主机上每个网络接口的配置和状态
netstat -lp 标识正在监听的网络服务
netstat -rn 检查路由表
netstat -s 查看各种网络协议运行的统计信息
netstat -tln 用来查看linux的端口使用情况
netstat -anp | grep 25
netstat --ip -an
----Linux查看端口及服务
# netstat -tulpn
或者是
# netstat -npl
-t : 指明显示TCP端口
-u : 指明显示UDP端口
-l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)
-p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。
-n : 不进行DNS轮询(可以加速操作)
--------------------------------------------------Lsof:其功能是列示打开的文件,包括监听端口
推荐:lsof -i :port,使用lsof -i :port就能看见所指定端口运行的程序,同时还有当前连接。//lsof -i:25,可以看到PID:3200
使用lsof -i :port就能看见所指定端口运行的程序,同时还有当前连接。
命令lsof -p 3125查看进程3125打开了哪些文件
#lsof | wc -l 查看所有进程的文件打开数
#lsof -p pid |wc -l 查看摸个进程打开的文件数
查看活动的连接:
#lsof -i @192.168.1.171
查看某个用户的打开的文件
#lsof -u root(root用户打开的文件)
#lsof -u ^root(非root用户打开的文件)
查看被打开某一文件的相关进程信息:
#lsof /proc
查看活动的连接:
#lsof -i @192.168.1.171
查看某个用户的打开的文件
#lsof -u root(root用户打开的文件)
#lsof -u ^root(非root用户打开的文件)
-----------------------------------------------------------监视进程ps
ps是比较常用的,可以配合grep命令来查找正在运行的进程。
ps auxf 所有进程的全貌
ps lax
推荐ps ax 命令显示一个当前系统进程的列表,该列表是一个静态列表
ps aux |grep send
ps -ef | grep apache 显示PPID
ps -fp "5892 5893" 查看相关进程
使用以下命令查看:
ps auxw --sort=rss
ps auxw --sort=%cpu
mysql的线程池中有固定的28个线程
ps -eLf|grep 'mysqld'|grep -v 'grep'|wc -l
外网的mysql,与内网的mysql都是28个线程
%CPU 进程的cpu占用率
%MEM 进程的内存占用率
VSZ 进程所使用的虚存的大小
RSS 进程使用的驻留集大小或者是实际内存的大小
TTY 与进程关联的终端(tty)
STAT 检查的状态:进程状态使用字符表示的,如R(running正在运行或准备运行)、S(sleeping睡眠)、I(idle空闲)、Z (僵死)、D(不可中断的睡眠,通常是I/O)、P(等待交换页)、W(换出,表示当前页面不在内存)、N(低优先级任务)T(terminate终止)、W has no resident pages
START (进程启动时间和日期)
TIME ;(进程使用的总cpu时间)
COMMAND (正在执行的命令行命令)
NI (nice)优先级
PRI 进程优先级编号
PPID 父进程的进程ID(parent process id)
SID 会话ID(session id)
WCHAN 进程正在睡眠的内核函数名称;该函数的名称是从/root/system.map文件中获得的。
FLAGS 与进程相关的数字标识
ps常用参数
-L Show threads, possibly with LWP and NLWP columns
-A 显示所有进程(等价于-e)(utility)
-a 显示一个终端的所有进程,除了会话引线
-N 忽略选择。
-d 显示所有进程,但省略所有的会话引线(utility)
-x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility)
-p pid 进程使用cpu的时间
-u uid or username 选择有效的用户id或者是用户名
-g gid or groupname 显示组的所有进程。
U username 显示该用户下的所有进程,且显示各个命令的详细路径。如:ps U zhang;(utility)
-f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on.
-l 长格式(有F,wchan,C 等字段)
-j 作业格式
-o 用户自定义格式。
v 以虚拟存储器格式显示
s 以信号格式显示
-m 显示所有的线程
-H 显示进程的层次(和其它的命令合用,如:ps -Ha)(utility)
e 命令之后显示环境(如:ps -d e; ps -a e)(utility)
h 不显示第一行
------------------------------------------------------------kill killall pkill
kill 命令用于终止进程
例如: kill -9 [PID]
-9表示强迫进程立即停止
通常用ps 查看进程PID ,用kill命令终止进程
killall 通过程序的名字,直接杀死所有进程
killall -p php-fpm
pkill 和killall 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill 来杀掉
pkill fpm
-----------------------------------------------------------pmap 查看进程所用内存
RSS 就是这个process 实际占用的物理内存,VSZ 就是process 的虚拟内存,就是process 现在没有使用但未来可能会分配的内存大小。
pmap -d 进程号
回显信息的最后一行就是total的内存统计信息。
pmap指令查看哪些地方占用了内存
# pmap $(pgrep php-cgi |head -1)
6746: /usr/local/php/bin/php-cgi –fpm –fpm-config /usr/local/php/etc/php-fpm.conf
0000000000400000 6680K r-x– /usr/local/php/bin/php-cgi
0000000000c86000 268K rw— /usr/local/php/bin/php-cgi
0000000000cc9000 56K rw— [ anon ]
0000000005012000 2240K rw— [ anon ]
0000003efd200000 112K r-x– /lib64/ld-2.5.so
…….
00002ac28a7a5000 2048K —– /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xhprof.so
00002ac28a9a5000 4K rw— /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xhprof.so
00002ac28a9a6000 84K r-x– /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/apc.so
00002ac28a9bb000 2048K —– /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/apc.so
00002ac28abbb000 8K rw— /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/apc.so
00002ac28abbd000 32K rw— [ anon ]
00002ac28abd4000 40K r-x– /lib64/libnss_files-2.5.so
00002ac28abde000 2044K —– /lib64/libnss_files-2.5.so
00002ac28addd000 4K r—- /lib64/libnss_files-2.5.so
00002ac28adde000 4K rw— /lib64/libnss_files-2.5.so
00007fffa717e000 84K rw— [ stack ]
ffffffffff600000 8192K —– [ anon ]
total 154172K
------------mkdir
mkdir -p
mkdir有一个很方便的-p选项,该选项告诉mkdir创建所有缺少的父目录,如下所示:
$ mkdir -p easy/as/pie
mkdir -m 711 test2 //指定权限
----------------touch 创建文件
----------------------telnet 远端登入
ping smtp.163.com
telnet smtp.163.com
-----------------file 显示文件类型
file 文件或文件夹
查看系统状态
查看系统使用字符集:echo $LANG $LANGUAGE
环境变量:set
系统
查看CPU个数 cat /proc/cpuinfo 看出现processor字样的行数是多少条
cat /proc/meminfo
查看当前操作系统发行版信息
#cat /etc/issue
查看cpu型号
# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
查看物理cpu颗数
cat /proc/cpuinfo | grep physical | uniq -c
8 physical id : 1
(说明实际上是1颗8核的CPU)
查看cpu运行模式
# getconf LONG_BIT
32
(说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)
查看cpu内核数
# cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l
8
查看cpu信息概要(昨天看aix的时候刚发现的,在ubuntu上竟然也有~):
#lscpu
Architecture: i686 #架构686
CPU(s): 2 #逻辑cpu颗数是2
Thread(s) per core: 1 #每个核心线程数是1
Core(s) per socket: 2 #每个cpu插槽核数/每颗物理cpu核数是2
CPU socket(s): 1 #cpu插槽数是1
Vendor ID: GenuineIntel #cpu厂商ID是GenuineIntel
CPU family: 6 #cpu系列是6
Model: 23 #型号23
Stepping: 10 #步进是10
CPU MHz: 800.000 #cpu主频是800MHz
Virtualization: VT-x #cpu支持的虚拟化技术VT-x(对此在下一博文中解释下http://hi.baidu.com/sdusoul/blog/item /5d8e0488def3a998a5c272c0.html)
L1d cache: 32K #一级缓存32K(google了下,这具体表示表示cpu的L1数据缓存为32k)
L1i cache: 32K #一级缓存32K(具体为L1指令缓存为32K)
L2 cache: 3072K #二级缓存3072K
cat /proc/cpuinfo | grep processor
cat /proc/version 查看linux发行版本
# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量
资源
# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# du -sh <目录名> # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载
磁盘和分区
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况
网络
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息
进程
# ps -ef # 查看所有进程
# top # 实时显示进程状
服务
# chkconfig --list # 列出所有系统服务
# chkconfig --list | grep on # 列出所有启动的系统服务
程序
# rpm -qa # 查看所有安装的软件包
--------------------------ifconfig 命令无效
# ifconfig
提示命令不存在
使用 # /sbin/ifconfig 即可
原因: 系统默认的环境变量设置不对
在 普通用户 和root用户下分别执行echo $PATH,PATH里少了四个地址:/sbin:/usr/sbin:/usr/local/sbin:/usr/kerberos/sbin
而,ifconfig恰恰就在/sbin里面。
修改/home/用户/.bash_profile,在PATH后面添加/sbin:/usr/sbin:/usr/local/sbin:/usr/kerberos/sbin这几个路径。
改完之后,注销下或者重启才能生效。
再来sudo ifconfig , 就OK了。
-------------------加入到service服务
ln -s /usr/local/webserver/php/sbin/php-fpm /etc/init.d/php-fpm
---在/usr/local/webserver/php/sbin/php-fpm文件头加入
# chkconfig: - 85 15
# description: It is used to serve
chkconfig --add php-fpm
即可调用service php-fpm restart
chkconfig --list | grep php-fpm
php-fpm 0:off 1:off 2:on 3:on 4:on 5:on 6:off
3 表示文本命令下
5 表示图形界面下
#####chkconfig --level 345 php-fpm on
#####chkconfig php-fpm on [设置服务开机启动]
---------------------bin 文件快捷方式
ln -s /usr/local/webserver/php/bin/php /usr/bin/php
ln -s /usr/local/webserver/mysql/bin/mysql /usr/bin/mysql
ln -s /usr/local/webserver/nginx/sbin/nginx /usr/bin/nginx
nginx -t
mysql -u root -p
php
添加mysql/bin目录到path
sed -i '/^PATH/s#$#:/usr/local/webserver/mysql/bin#' /root/.bash_profile
-----------------------------------------ln
连结又可分为两种 : 硬连结(hard link)与软连结(symbolic link),硬连结的意思是一个档案可以有多个名称,而软连结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬连结是存在同一个档案系统中,而软连结却可以跨越不同的档案系统。
-s : 进行软链结
存在/home/abc/111/sr
存在/home/abc/222
#ln -s /home/abc/111/sr /home/abc/222/sr
#ls -al /home/abc/222/
lrwxrwxrwx 1 root root 16 09-08 22:12 3r -> /home/abc/111/3r
如果您想要让python 只要执行python ,就能调用,请配置环境变量,或者在/usr/bin 中做一个python 的链接;
# ln -s /opt/python/bin/python /usr/bin/python
$ echo $PATH
我们能够用echo命令来显示PATH变量,用$给变量名加前缀以向shell表示我们需要这个变量的值。我们看到/home/swaroop/bin是 PATH变量中的目录之一。swaroop是我的系统中使用的用户名。通常,在你的系统中也会有一个相似的目录。你也可以把你选择的目录添加到PATH变量中去——这可以通过运行PATH=$PATH:/home/swaroop/mydir完成,其中“/home/swaroop/mydir”是我想要添加到PATH变量中的目录。
-------------------------------chkconfig 用户管理服务,可以在系统中增删启动脚本
chkconfig --list [name] 显示所有运行级系统服务的运行状态信息(on或off)。如果指定了name,那么只显示指定的服务在不同运行级的状态【对应/etc/rc.d/rc*.d/目录】 。
chkconfig --add name 增加一项新的服务。chkconfig确保每个运行级有一项启动(S)或者杀死(K)入口。如有缺少,则会从缺省的init脚本自动建立。
chkconfig --del name 删除服务,并把相关符号连接从/etc/rc[0-6].d删除。
chkconfig [--level levels] name
#chkconfig --level 345 nfs off
on和off分别指服务被启动和停止,reset指重置服务的启动信息, on和off开关,系统默认只对运行级3,4,5有效,但是reset可以对所有运行级有效。
#/sbin/chkconfig --add sshd [在服务清单中添加ssh服务]
#/sbin/chkconfig sshd on [设置ssh服务开机启动]