Linux

1./etc/rc.d/init.d
http://blog.chinaunix.net/uid-103601-id-2961366.html

系统是如何选择哪些需要启动哪些不要呢?这时刚才说的运行级别就起作用了。在决定了系统启动的run level之后,/etc/rc.d/rc这个脚本先执行。在RH9和FC7的源码中它都是一上来就check_runlevel()(虽然实现的代码不 一样,也大同小异),知道了运行级别之后,对于每一个运行级别,在rc.d下都有一个子目录分别是rc0.d,rc1.d ….. rc6.d。每个目录下都是到init.d目录的一部分脚本一些链接。每个级别要执行哪些服务就在相对应的目录下,比如级别5要启动的服务就都放在 rc5.d下,但是放在这个rc5.d下的都是一些链接文件,链接到init.d中相对应的文件,真正干活到init.d里的脚本

Init进程是系统启动之后的第一个用户进程,所以它的pid(进程编号)始终为1。init进程上来首先做的事是去读取/etc/目录下inittab 文件中initdefault id值,这个值称为运行级别(run-level)。它决定了系统启动之后运行于什么级别。运行级别决定了系统启动的绝大部分行为和目的。这个级别从0到 6 ,具有不同的功能。不同的运行级定义如下:
  # 0 - 停机(千万别把initdefault设置为0,否则系统永远无法启动)
  # 1 - 单用户模式
  # 2 - 多用户,没有 NFS
  # 3 - 完全多用户模式(标准的运行级)
  # 4 – 系统保留的
  # 5 - X11 (x window)
  # 6 - 重新启动 (千万不要把initdefault 设置为6,否则将一直在重启 )

2.chkconfig
http://blog.chinaunix.net/uid-22566367-id-3111987.html

3.查看文件或目录大小du
3.1.命令格式:
du [选项][文件]
3.2.命令功能:
显示每个文件和目录的磁盘使用空间。
3.3.命令参数:
-a或-all  显示目录中个别文件的大小。  
-b或-bytes  显示目录或文件大小时,以byte为单位。  
-c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-k或--kilobytes  以KB(1024bytes)为单位输出。
-m或--megabytes  以MB为单位输出。  
-s或--summarize  仅显示总计,只列出最后加总的值。
-h或--human-readable  以K,M,G为单位,提高信息的可读性。
-x或--one-file-xystem  以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。  
-S或--separate-dirs   显示个别目录的大小时,并不含其子目录的大小。
-X<文件>或--exclude-from=<文件>  在<文件>指定目录或文件。  
--exclude=<目录或文件>         略过指定的目录或文件。   
-D或--dereference-args   显示指定符号链接的源文件大小。  
-H或--si  与-h参数相同,但是K,M,G是以1000为换算单位。  
-l或--count-links   重复计算硬件链接的文件。
3.4.使用例子
方便阅读的格式显示,文件和目录都显示:du -ah test
显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和:du -c log30.tar.gz log31.tar.gz
按照空间大小排序:du|sort -nr|more
选出排在前面的10个
du -s /usr/* | sort -rn | head
选出排在后面的10个
du -s /usr/* | sort -rn | tail
输出当前目录下各个子目录所使用的空间:du -h  --max-depth=1

4.rpm
http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/08/2203153.html

5.mount
sudo mount -o nolock -t nfs xx.xx.xx.xx:/drbd /var/www/resin/resource/
nfs:http://blog.chinaunix.net/uid-26284318-id-3111651.html

/ # mount -t nfs 192.168.1.249:/appdata /mnt
portmap: server localhost not responding, timed out
RPC: failed to contact portmap (errno -5).
portmap: server localhost not responding, timed out
RPC: failed to contact portmap (errno -5).
lockd_up: makesock failed, error=-5
portmap: server localhost not responding, timed out
RPC: failed to contact portmap (errno -5).
mount: Mounting 192.168.1.249:/appdata on /mnt failed: Input/output error

可能原因:
nfs mount 默认选项包括文件锁,依赖于portmap提供的动态端口分配功能;
简单的解决方法:kill 文件锁(lockd)或者mount -o nolock ;
上面说的文件锁具体是什么原因,还没有找到更好的解决办法。
注意:主机防火墙有设置时,也可能导致目标板无法正常访问。

改用: mount  -o nolock 192.168.1.100:/nfsroot /mnt 可解决.


6.top
<空格>:立刻刷新。
H: 查看每个线程的性能信息
P:根据CPU使用大小进行排序。
T:根据时间、累计时间排序。
q:退出top命令。
m:切换显示内存信息。
t:切换显示进程和CPU状态信息。
c:切换显示命令名称和完整命令行。
M:根据使用内存大小进行排序。
W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

数字1查看每个CPU的性能数据
PR 优先级
NI nice值。负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR 共享内存大小,单位kb
S 进程状态:
            D=不可中断的睡眠状态
            R=运行
            S=睡眠
            T=跟踪/停止
            Z=僵尸进程
默认情况下仅显示比较重要的  PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND  列。可以通过下面的快捷键来更改显示内容。
更改显示内容通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z  即可显示或隐藏对应的列,最后按回车键确定。

查看CPU信息 cat /proc/cpuinfo
查看内存信息 cat /proc/meminfo
查看Java线程数 ps -eLf | grep java -c

查看下TCP连接状态,建立了800多个连接,需要尽量降低ESTABLISHED
netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n
1 established)
1 Foreign
3 CLOSE_WAIT
7 CLOSING
14 FIN_WAIT2
25 LISTEN
39 LAST_ACK
609 FIN_WAIT1
882 ESTABLISHED
10222 TIME_WAIT

7.增加虚拟内存(2G)
mkdir /data
sudo dd if=/dev/zero of=/data/swapfile bs=1024 count=2000000
把生成的文件转换成 Swap 文件
sudo mkswap /data/swapfile
激活 Swap 文件。
sudo swapon /data/swapfile
检查swap是否正确:
/sbin/swapon -s
也可free查看
如果需要卸载这个 swap 文件,可以进入建立的 swap 文件目录。执行下列命令。
sudo swapoff swapfile

编辑/etc/fstab文件,使在每次开机时自动加载swap文件:
/data/swapfile swap swap default 0 0
这里有个问题!如果是阿里云的服务器,阿里云默认是不让用户使用swap,需要编辑/etc/rc.d/rc.local文件,将文件中的swapoff行注释或删掉。

8.磁盘空间满了,清理磁盘
首先使用命令df -h查看磁盘使用情况,确认无剩余空间后,再去找到大的文件或目录。
直接进入Linux跟目录/,使用sudo du -sh *,结合时间情况找到大文件或目录,可以进入子目录深入跟踪,找到无用的大文件,将其删除。
文件大小排序:sudo du -s * | sort -nr | head
这时可能会发现删除后并没有释放磁盘空间。这是因为linux中如果文件被进程占用,进程将仍然能够读取该文件,磁盘空间也一直被占用,常见的一些运行日志是一直被进程占用的。
我们可以使用lsof |grep deleted查看被删除且被进程占用的。这时我们可以停掉进程,让os释放空间。
lsof全名list opened files,也就是列举系统中已经被打开的文件。我们都知道,linux环境中,不论什么事物都是文件,
设备是文件,文件夹是文件,甚至sockets也是文件。所以,用好lsof命令,对日常的linux管理非常有帮助。

服务器上的tomcat的catalina.out文件越来越大,对系统的稳定造成了一定的影响,以前每次都是想起来的时候手工清理一下(cat /dev/null > catalina.out),后来发现了logratate这个工具,Ubuntu下的mysql,nginx好像也是用的这个工具还定期整理log的。 配置文件为/etc/logrotate.conf,和很多其它ubuntu下的工具一下,也可以把配置文件写在/etc/logrotate.d/下面。如对我们的tomcat的log文件进行整理,sudo vi /etc/logrotate.d/tomcat

/usr/local/tomcat/logs/catalina.out {
rotate 14
daily
copytruncate
compress
notifempty
missingok
}
其中:
rotate 7 表示保留7天的备份文件
daily 表示每天整理一次
copytruncate 表示先复制log文件的内容,然后再清空
compress 表示压缩备分文件
missingok 表示如果找不到log文件也没OK
notifempty 表示如果log文件是空的,就不进行rotate
可以通过/usr/sbin/logrotate -f /etc/logrotate.conf来执行。Ubuntu有/etc/cron.daily/logrotate文件,内容为:

#!/bin/sh
test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf
表示每天会定时执行一次这个命令
通过ntp同步服务器的时间
根据 Ubuntu的文档 有两种方式可以用来使服务器的时间和ntp server同步。一种是通过ntpdate命令,如
ntpdate ntp.Ubuntu.com
然后在/etc/cron.daily/下新建一个文件来每天执行一次这个命令
另一种是通过ntpd来更新。sudo apt-get install ntp。配置文件/etc/ntp.conf,可以通过修改配置文件为改变ntp server, 我们用的是210.72.145.44这个server
对于Linux 的系统安全来说,日志文件是极其重要的工具。系统管理员可以使用logrotate 程序用来管理系统中的最新的事件,对于Linux 的系统安全来说,日志文件是极其重要的工具。系统管理员可以使用logrotate 程序用来管理系统中的最新的事件。logrotate 还可以用来备份日志文件。 logrorate用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。
   logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 。
  logrotate 的配置文件是 /etc/logrotate.conf。主要参数如下表:
  compress 通过gzip 压缩转储以后的日志
  nocompress 不需要压缩时,用这个参数
  copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
  nocopytruncate 备份日志文件但是不截断
  create mode owner group 转储文件,使用指定的文件模式创建新的日志文件
  nocreate 不建立新的日志文件
  delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
  nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。
   errors address 转储时的错误信息发送到指定的Email 地址
  ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。
  notifempty 如果是空文件的话,不转储
   mail address 把转储的日志文件发送到指定的E-mail 地址
  nomail 转储时不发送日志文件
  olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
  noolddir 转储后的日志文件和当前日志文件放在同一个目录下
  prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
  postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
  daily 指定转储周期为每天
  weekly 指定转储周期为每周
  monthly 指定转储周期为每月
  rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
  tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~
  size size 当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).

你可能感兴趣的:(linux)