linux 必须命令

常识

$PATH

执行文件路径的变量

echo $PATH

加入路径 path

PATH=”$PATH”:/root

不要把当前目录加入 path ,如果在 tmp 下有一个病毒伪装成 ls ,你在 tmp 下执行,就会中标

常用目录( FHS

/

根目录,建议此目录下只有目录,不要直接有文件,所有与启动相关的文件都应放在此分区中, /etc /bin /dev /lib /sbin 5 个子目录应该和根目录连在一起

/boot

启动时会用到的文件, vmlinuz linux 的核心

/dev

任何设备都以文件类型存放在这个目录下

/home

系统默认的用户目录

/root

管理员的家目录

/mnt  /media

光盘、 usb 默认载入点

/sbin  /usr/sbin  /usr/local/sbin

系统管理员才会执行的命令

/etc

系统的主要配置文件目录

/usr/local

本机自行安装程序默认目录

Linux 用户身份与用户组记录文件

/etc/passwd 注:用户( user )的配置文件;

/etc/shadow 注:用户( user )影子口令文件;

/etc/group 注:用户组( group )配置文件;

/etc/gshadow 注:用户组( group )的影子文件;

drwxr--r--  3 root root 4096

这是一个目录,但是非 root 账号不能进入此目录,如果在该目录下不能执行任何命令,自然也无法进入了,所以,如果相对他人开发某个目录的话,请记住开发目录的 x 属性

日志

/var/log/messages

messages 日志是核心系统日志文件。它包含了系统启动时的引导消息,以及系统运行时的其他状态消息。 IO 错误、网络错误和其他系统错误都会记录到这个文件中。其他信息,比如某个人的身份切换为 root ,也在这里列出。如果服务正在运行,比如 DHCP 服务器,您可以在 messages 文件中观察它的活动。通常, /var/log/messages 是您在做故障诊断时首先要查看的文件。

/var/log 目录下有一些文件以一个数字结尾,这些是已轮循的归档文件。日志文件会变得特别大,特别笨重。 Linux 提供了一个命令来轮循这些日志,以使您的当前日志信息不会淹没在旧的无关信息之中。 logrotate 通常是定时自动运行的,但是也可以手工运行。当执行后, logrotate 将取得当前版本的日志文件,然后在这个文件名最后附加一个“ .1 ”。其他更早轮循的文件为“ .2 ”、“ .3 ”,依次类推。文件名后的数字越大,日志就越老。

Tcpd

/etc/rc.d/rc.local

linux 自动启动服务很简单 , 最简单的是把启动命令放到 /etc/rc.d/rc.local 文件里这样就可以每次启动的时候自动启动服务了 , 例如对于 apache, 编译好 apache 后会在安装目录的 bin 下生成 apachectl 文件 , 这是个启动教本 , 我们只需要把这个命令加到 rc.local 里就可以了

echo /usr/local/apache/bin/apachectl >> /etc/rc.d/rc.local

硬盘分区

MBR master boot recorder 主引导记录,里面记录着引导程序和磁盘分区表

一个硬盘最多有 4 个(主 + 扩展)分区,其中扩展分区只能有一个。

所以一般分区可以采用以下分区模式:

P+P+P+P 或者 P+P+P+E 或者 P+E

 

扩展分区不能直接使用,要划分成逻辑分区才行。如果分区要超过 4 个,必要使用扩展分区,且在扩展分区里划分逻辑分区才行。

其中 /dev/hda1-/dev/had4 被预留了。

比如我想划分 5 个分区,一个主分区,一个扩展分区。那么磁盘分区编号为:

/dev/hda1  /dev/hda5    /dev/hda6  /dev/hda7    /dev/hda8

/dev/hda2 为扩展分区,它本身仅是用来规划用的,实际上不存在这个设备。

xinetd 运行模式和 standalone 运行模式

概述

xinetd 取代了 inetd ,并且提供了访问控制、加强的日志和资源管理功能。

linux 中一些不长期使用的服务没有被作为单独的守护进程在开机时启用, linux 把这些服务监听端口全部由一个独立的进程 xinetd 集中监听,当收到相应的客户端请求之后, xinetd 进程就临时启动相应服务并把相应端口移交给相应服务,客户端断开之后,相应的服务进程结束, xinetd 继续监听。要开 telnet 服务器,只需配置 xinetd 即可。 Xinetd 本身是 standalone 方式运行的

chkconfig –list

xinetd     0:off    1:off    2:off    3:on    4:on    5:on    6:off

 

standalone 一次性启动,运行期间一直驻留在内存中,优点是对接入信号反应快,缺点是损耗了一定的系统资源,因此经常应用于对实时反应要求较高的专业 FTP 服务器。

xinetd 模式运行的服务表示该服务进程并不以守护进程执行 , FTPD 进程为例吧 , xinetd 模式运行这个服务 , 情况是这样的 , 本身 FTP 服务 是会监听 21 号端口的 , 但是以这种模式运行这个服务的话 ,21 号端口则由 xinetd 进程来监听(此时 FTPD 服务并没有运行) , 如果你的网卡接收到有 21 号端口请求 , 则有 xinetd 进程会去调用 FTPD 程序 , 将在 21 号端口接收到的请求数据移交给 FTPD 进程去处理,处理完后 FTPD 进程退出,而 xinetd 进程继续监听 21 号端口 , 这有点类似 windows svhost 进程 ; 而以 standalone 模式运行的服务则是服务进程 , ftpd 以守护进程在内存中运行 , 接收到 21 号端口的请求后由 FTPD 进程 fork 出一个子进程进行 处理,而原进程继续监听 21 号端口。

参看本机 ftp 服务是什么方式启动的

chkconfig –list # 查看所有服务

找到如下:

vsftpd     0:off    1:off    2:off    3:off    4:off    5:off    6:off
xinetd based services:
    vsftpd:    on

standalone 运行模式下的 vsftpd 没有开启,使用 xinetd 模式开启的 vsftpd 服务

cd /etc/xinted.conf

文件定义如下

defaults
{
    instances = 60
log_type = SYSLOG authpriv
log_on_success        = HOST PID
log_on_failure        = HOST
    cps            = 50 10
}
includedir /etc/xinetd.d

 

cd /etc/xinted.d

cat vsftpd

看到如下内容:

service vsftpd
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
log_on_failure += USERID
    log_on_success +=DURATION USERID
    nice            =10
disable = no
}

disable=no 表名已启动此服务。

ps -aux |grep vsftpd

启动服务

1. 启动 standalone 服务的方式:以 syslog 为例:

   [root@linux ~]# /etc/init.d/syslog start

   2. 启动 super daemon(xinted) 服务的方式:以 telnet 为例:

   [root@linux ~]# vi /etc/xinetd.d/telnet ( 设定方式参考下节 )

   [root@linux ~]# /etc/init.d/xinetd restart

另外,除了这样的启动方式之外,我们还可以透过 Fedora ( Red Hat 系统 ) 所提供的 service 这个程式来进行 daemon 的启动喔!其实 service 仅是一支 script 啦, 他可以解析后面带有的参数,然后去到 /etc/init.d/ 去启动相对应的服务名称的 script 而已! 有兴趣的话,可以自行去解析 /sbin/service 这支 shell script 啊! 底下我们大略说明一下他的用法!

   [root@linux ~]# service [service name] (start|stop|restart|...)

  参数:

   service name :亦即是需要启动的服务名称,需与 /etc/init.d/ 对应;

   start|...   :亦即是该服务要进行的工作。

  范例:

  范例一:重新启动 crond 这支 daemon

   [root@linux ~]# service crond restart

   [root@linux ~]# /etc/init.d/crond restart

  在上面的范例当中,其实启动方式以 service 这个程式,或者直接去到 /etc/init.d/ 底下启动, 都一样啦!自行去解析 /sbin/service 就知道为啥了! ^_^

   Tips:

事实上,在 Linux 系统中,要‘开或关某个 port ’,就是需要‘ 启动或关闭某个服务’啦!因此,你可以找出某个 port 对应的服务,程式对应的服务, 进而启动或关闭他,那么那个经由该服务而启动的 port ,自然就会关掉了!

/dev/null

cat /dev/null > catalina.out# 清空文件

环境设置文件

系统设置值

/etc/sysconfig/i18n

语系数据

/etc/profile

设置总体的 PATH 等信息,这个文件也规划出 /etc/profile.d /etc/inputrc

/etc/bashrc

确定 unmask 的功能,和提示符的内容

/etc/profile.d/*.sh

针对颜色、语系、 vim which 等命令进行附加配置

/etc/man.config

Man 的系统变量位置

个人设置值

~/.bash_profile ~/.bash_login ~/.profile

这三个文件只要一个即可,一般是第一个存在。只在登陆时才读取

~/.bashrc

一般将自己的需要设置到这里,每次执行 shell 脚本的时候,都会重新读取这个文件

~/.bash_history

每次登陆 bash bash 会先读这个文件,将所有的历史命令读入内存

~/.bash_logout

离开 linux 时,执行一些操作

读取顺序

先读取系统设置值,然后读取 ~/.bash_* ,然后读取 ~/.bashrc 。所以登陆 bash 后,最终读取的配置文件是 ~/.bashrc, 在这此文件中的设置会是最终的设置值,可以把一些常用 alias PATH 放入此文件。

source . 都能将配置文件的内容读进当前 shell 环境中

source /etc/bashrc

.  /etc/bashrc

常用命令

alias

设置别名 alias ll ='ls -l'

Unalias 删除别名

这是针对本次登录,如果想长期生效,需修改 ~/.bashrc, 登陆后初始化 alias( 跟用户有关,在 root 用户登录时,修改此文件,则只有 root 用户登录时才生效

cat –n

cd

chmod –x

八进制数字                                  权限        

0                                                         ---

1                                                            --x

2                                                            -w-

3                                                            -wx

4                                                            r--

5                                                            r-x

6                                                            rw-

7                                                            rwx

我们可以根据上面的数字列表来组合权限,比如我想让属主拥有 rwx (所对应的数字是 7 ),属组拥有 --x (所对应的数字是 1) ,其它用户拥有 ---( 所对应的数字是 0) ,这样我们把各组的权限组合起来就是是 rwx--x--- (对应的数字是 710)

chmod 710 sun.txt

和八进制方法一样,如果我们为一个目录及其下的子目录和文件具有相同的属性,就可以用 -R 参数;

 

u 代表属主

g 代表属组

o 代表其它用户

a 代表属主、属组和其它用户,也就是上面三个用户(或组)的所有;

权限定义字母:

r 代表读权限;

w 代表写权限;

x 代表执行权限;

权限增减字符;

- 代表减去相关权限;

+ 代表增加相关权限;

示例一:

[root@localhost ~]# ls -l linuxsir007.txt

-rwxr-xr-x 1 root root 0 04-23 20:11 linuxsir007.txt

[root@localhost ~]# chmod ugo-x linuxsir007.txt  注:把属主、用户组及其它用户的执行权限都减掉;

[root@localhost ~]# ls -l linuxsir007.txt

-rw-r--r-- 1 root root 0 04-23 20:11 linuxsir007.txt

chkconfig

检查,设置系统的各种服务

linux os 将操作环境分为以下 7 个等级 :

0: 开机 ( 请不要切换到此等级 )

1: 单人使用者模式的文字界面

2: 多人使用者模式的文字界面 , 不具有网络档案系统 (NFS) 功能

3: 多人使用者模式的文字界面 , 具有网络档案系统 (NFS) 功能

4: 某些发行版的 linux 使用此等级进入 x windows system

5: 某些发行版的 linux 使用此等级进入 x windows system

6: 重新启动

参数 :   

--add   新增所指定的系统服务

         --del 删除所指定的系统服务

         --level 指定该系统服务要在哪个执行等级中开启或关闭

         --list   列出当前可从 chkconfig 指令管理的所有系统服务和等级代号

            on/off/reset   在指定的执行登记 , 开启 / 关闭 / 重置该系统服务

例子

1. 查看在各种不同的执行等级中 , 各项服务的状况 :

$chkconfig --list

2. 列出系统服务 vsftpd 在各个执行等级的启动情况:

$chkconfig --list vsftpd

3. 在执行等级 3,5 时,关闭 vsftpd 系统服务:

$chkconfig --level 35 vsftpd off

4. 在执行等级 2 3 5 时,开启 vsftpd 系统服务:

$chkconfig --level 235 vsftpd on

5. 关闭一些自己不需要的服务 ->

如果没有打印机:

chkconfig --level 235 cups off

如果没有局域网:

chkconfig --level 235 smb off

如果不需要远程用户登录的:

chkconfig --level 235 sshd off

如果不需要定时任务的:

chkconfig --level 235 crond off

如果不需要添加新硬件的:

chkconfig --level 235 kudzu off

 

xinetd 管理的服务会立即被 chkconfig 影响。譬如,如果 xinetd 在运行, finger 被禁用,那么执行了 chkconfig finger on 命令后, finger 就不必手工地重新启动 xinetd 来立即被启用。对其它服务的改变在使用 chkconfig 之后不会立即生效。你必须使用 service daemon stop 命令来停止个别服务。在前面的例子中,把 daemon 换成你想停止的服务名称,如 httpd stop 换成 start restart 来启动或重新启动该服务。

 

chown

当我们要改变一个文件的属组,我们所使用的用户必须是该文件的属主而且同时是目标属组成员,或超级用户。只有超级用户的才能改变文件的属主。

举例:将 example.txt 文件的属主改为 linuxsirorg 用户;

[root@localhost ~]# ls -l example.txt
-rw-r--r-- 1 root root 0 04-24 22:37 example.txt

[root@localhost ~]# ls -l example.txt
-rw-r--r-- 1 linuxsirorg root 0 04-24 22:37 example.txt

[root@localhost ~]# chown beinan:root example.txt
[root@localhost ~]# ls -l example.txt
-rw-r--r-- 1 beinan root 0 04-24 22:37 example.txt

chown 也提供了 -R 参数,这个参数对目录改变属主和属组极为有用,我们可以通过加 -R 参数来改变某个目录下的所有文件到新的属主或属组;

cp

date

df –h

du

exit( 退出当前 shell)

fdisk

fdisk –l 参看磁盘使用情况

file

通过 file 指令,我们得以辨识该文件的类型。

[root@qb ~]# file install.log

install.log: UTF-8 Unicode text

find

语法说明
find 命令的一般形式为;

find pathname -options [-print -exec -ok ...]

find 命令的参数;

pathname: find 命令所查找的目录路径。例如用. 来表示当前目录,用/ 来表示系统根目录。
-print find 命令将匹配的文件输出到标准输出。
-exec find 命令对匹配的文件执行该参数所给出的shell 命令。相应命令的形式为'command' {} \; ,注意{}\ ;之间的空格。
-ok : 和-exec 的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell 命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

find 命令选项

-name
按照文件名查找文件。
-perm
按照文件权限来查找文件。
-prune
使用这一选项可以使find 命令不在当前指定的目录中查找,如果同时使用-depth 选项,那么-prune 将被find 命令忽略。
-user
按照文件属主来查找文件。
-group
按照文件所属的组来查找文件。

-mtime -n +n
按照文件的更改时间来查找文件, - n 表示文件更改时间距现在n 天以内,+ n 表示文件更改时间距现在n 天以前。find 命令还有-atime-ctime 选项,但它们都和-m time 选项。
-nogroup
查找无有效所属组的文件,即该文件所属的组在/etc/groups 中不存在。
-nouser
查找无有效属主的文件,即该文件的属主在/etc/passwd 中不存在。
-newer file1 ! file2
查找更改时间比文件file1 新但比文件file2 旧的文件。
-type
查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
-size n [c] 查找文件长度为n 块的文件,带有c 时表示文件长度以字节计。
-depth :在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype :查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab 中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount :在查找文件时不跨越文件系统mount 点。
-follow :如果find 命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio :对匹配的文件使用cpio 命令,将这些文件备份到磁带设备中。

另外 , 下面三个的区别 :

   -amin n
  查找系统中最后N 分钟访问的文件
  -atime n
  查找系统中最后n*24 小时访问的文件
  -cmin n
  查找系统中最后N 分钟被改变文件状态的文件
  -ctime n
  查找系统中最后n*24 小时被改变文件状态的文件
    -mmin n
  查找系统中最后N 分钟被改变文件数据的文件
  -mtime n
  查找系统中最后n*24 小时被改变文件数据的文件

-exec –ok 说明

-exec 参数后面跟的是 command 命令,注意点如下:

command 命令的终止,使用 ';' ( 分号)来判定,在后面必须有一个 ';'

'{}' ,使用{} 来表示文件名,也就是find 前面处理过程中过滤出来的文件,用于command 命令进行处理

特别强调,对于不同的系统,直接使用分号可能会有不同的意义, 使用转义符 '\' 在分号前明确说明

例子
找出某目录下 jsp 文件中有 203 关键字的

find /usr/local/tomcat/webapps -name '*.jsp' -exec grep 203 {} \;

find /usr/local/tomcat/webapps -name '*.jsp' -print |xargs grep 203

查找 系统中所有文件长度为 0 的普通文件,并列出它们的完整路径

find / -type f -size 0 -exec ls -l {} \;

查找当前文件系统中的所有目录并排序

find . -type d | sort

查找系统中的每一个普通文件,然后使用 xargs 命令来测试它们分别属于哪类文件

find . -type f -print | xargs file

free -m

ftp

windows 上先切换目录

ftp cqzhende.gicp.net

ls 列出所有文件

bye 退出

put 传文件

get 获取文件

lcd 切换本地路径

lpwd 显示本地路劲

 

grep

id

显示用户的 ID ,以及所属群组的 ID

ifconfig

kill

last 列出目前与过去登入系统的用户相关信息。

lastb 列出登入系统失败的用户相关信息

less

Less 是另一个文本阅读器,不过它还允许在文件中滚动浏览以及检索信息。

less /var/log/messages

上面的命令将显示 /var/log/messages 文件的内容。使用“ q ”来停止查看文件。使用“ h ”来获得 less 的使用帮助。

ln

硬链接 只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为 inode )。当 您移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。 硬链接的文件不需要用户有访问原始文件的权限,也不会显示原始文件的位置,这样有助于文件的安全。如果您删除的文件有相应的硬链接,那么这个文件依然会保留,直到所有对它的引用都被删除。

符号链接 是一个指针,指向文件在文件系统中的位置。符号链接可以跨文件系统,甚至可以指向远程文件系统中的文件。符号链接只是指明了原始文件的位置, 用户需要对原始文件的位置有访问权限才可以使用链接。如果原始文件被删除,所有指向它的符号链接也就都被破坏了。它们会指向文件系统中并不存在的一个位 置。

# Create a hard link from MyFile in the current        

  # directory to /YourDir/MyFile        

ln MyFile /YourDir                            

  # Create a symbolic (soft) link from MyFile in        

  # the current directory to /YourDir/YourFile       

ln -s MyFile /YourDir/Yourfile

        ln –s /var/log/messages  ~/messages

linux 系统日志创建符号链接,链接到用户目录下的 messages

locate

该命令在运行时需要后台索引的数据库作为支撑,在 Ubuntu 中这个数据库文件位于 /var/cache/locate/locatedb 。一般来说,这个数据库文件每天是通过 cron 自动更新的。如果不幸没有得到更新,那么可以执行 sudo updatedb 来手动更新。

login

ls

ls –l

2408949 -rwxr-xr-x 1 root root    7 04-21 12:47 lsfile.sh

第一字段:inode

第二字段:文件种类和权限;

第三字段: 硬链接个数;

第四字段: 属主;

第五字段:所归属的组;

第六字段:文件或目录的大小;

第七字段和第八字段:最后访问或修改时间;

第九字段:文件名或目录名

第一个- 代表是普通文件,若是d 代表目录

每个文件或目录都有一组 9 个权限位,每三位被分为一组,他们分别是属主权限位(占三个位置 )、用户组权限位(占三个位置)、其它用户权限位(占三个位置)。比如 rwxr-xr-x ,我们数一下就知道是不是 9 个位置了,正是这 9 个权限位来控制文件属主、用户组以及其它用户的权限。

mkdir

mv

 

netstat

利用 netstat 指令可让你得知整个 Linux 系统的网络情况

netstat –s 显示统计信息

netstat –a 显示所有连接信息

passwd 设置密码

ping

ps 报告程序状况

ps –aux |grep XXX

pwd

reboot 重新开机

rm –fr 递归强制删除

rmdir

rpm

redhat package manager

         rpm -q webmin

查询是否安装 webmin

套件安装

rpm -ivh 包名

i: 使用 rpm 的安装模式

v: 在安装过程中提供更多信息

h: 在安装过程中印出 #

套件删除

rpm -e 包名

套件升级

rpm -Uvh 包名

su

su - clsung 变更帐号为 clsung 并改变工作目录至 clsung 的家目录

su clsung 变更帐号为 clsung

sudo

tail

tail -f /var/log/messages

setup

linux 下的图形管理工具

上面的命令将显示 /var/log/messages 文件的最后 10 行,然后继续监控那个文件,并输出新的行为。要停止 tail -f 命令,使用 Ctrl + C 来中止进程。

tar

tar –cf lib.tar lib

lib 目录打包成 lib.tar

Top

top –n 1

显示一次

Time

 

侦测一个进程所需要的时间加上其他处理的时间的总和。不要和上面提到的date 命令混淆。比如,我可以使用命令“time ls ”来判断显示一个目录需要多长时间;或者我可以使用命令“time sleep 10 ”来测试time 命令(睡眠10 秒钟,什么也不做)。

 

touch

traceroute

显示数据包到主机间的路径

traceroute 指令让你追踪网络数据包的 路由 途径,预设数据包大小是 40Bytes ,用户可另行设置。

tree

 

 

uname –a

uptime

现在的时间
系统开机运转到现在经过的时间
连线的使用者数量
最近一分钟,五分钟和十五分钟的系统负载

vi

在命令模式下

:q! 退出不保存

:wq 推出并保存

/ searchword 搜索, n 下一个

dd 删除一行

v      开始标记文本。然后,移动光标

y      复制被标记的文本

x      剪切被标记的文本

p      粘贴被剪切或复制的文本

在每个用户的主目录下,都有一个 vi 的配置文件 ".vimrc" (如果没有的话,可以手动创建)。用户可以编辑它,使对其的设置在每次启动 vi 时都成为有效的参数。如以下几个:

   set nu ---- 显示行号

   set nonu   ---- 不显示行号

   set ic ---- 查找时不考虑大小写

   set noic   ---- 查找时考虑大小写

   set smartindent   ---- 自动缩进

 

w

w 命令也用于显示登录到系统的用户情况,但是与 who 不同的是, w 命令功能更加强大,它不但可以显示有谁登录到系统,还可以显示出这些用户当前正在进行的工作,感觉比较实用

w 显示目前登入系统的用户信息

wc(word count)

whereis

whereis 是来寻找命令的二进制文件,同时也会找到其帮助文件;

比如我们不知道 fdisk 工具放在哪里,我们就可以用 whereis fdisk 来查找;

[root@localhost ~]# whereis fdisk
fdisk: /sbin/fdisk /usr/share/man/man8/fdisk.8.gz

[root@qb ~]# whereis grep

grep: /bin/grep /usr/share/man/man1/grep.1.gz /usr/share/man/man1p/grep.1p.gz

who

显示系统中有那些使用者正在上面,显示的资料包含了使用者 ID ,使用的终端机,从那边连上来的,上线时间,呆滞时间, CPU 使用量,动作等等。

whois

whois 指令会去查找并显示指定帐号的用户相关信息,因为它是到 Network Solutions WHOIS 数据库去查找,所以该帐号名称必须在上面注册方能寻获,且名称没有大小写的差别。

y um

1. 使用YUM 查找软件包
命令: yum search <keyword>

例子

同步时间

hwclock --systohc

按照硬件时钟设置系统时钟

date;hwclock;hwclock -s;date

删除所有符合要求文件

updatedb

locate –r ‘.*properties2.*’|grep tomcat|xargs rm

 

mv -v 1.1.txt test || echo  failure >>2.txt

当复制 1.1.txt test 文件夹失败时写入 failure 2.txt

配置 telnet

安装 telnet

 

rpm –ivh telnet-server-0.17-39.el5.i386.rpm

vi /etc/xinetd.d/telnet# 启动

service xinetd restart

客户端访问时,不能使用 root 用户

开机进入文本模式

vi  /etc/inittab , 修改id:5:initdefault:id:3:initdefault:rebootok

查看 cpu 使用情况,并输出到一个文本

top -n 1 |grep Cpu >cpu.log

查看 cpu 硬件情况

cat /proc/cpuinfo

配置 sshd

vi /etc/ssh/sshd_config, 修改以下内容

protocol   2

permitRootLogin yes # 启用ssh root 登陆

PasswordAuthentication yes  # 设置是否允许口令验证

PermitEmptyPasswords no # 设置是否允许用口令为空的帐号登录。

如果想做到最大化安全链接,可以考虑在配置有双网卡的服务器上设置只允许内网链接SSH ,方法很简单,在/etc/hosts.deny 文件最后一行添加 一句sshd: ALL 然后在/etc/hosts.allow 的最后一行加上一句sshd: 192.168.10. 然后保存退出。

service sshd restart

关闭不需要的服务

输入 ntsysv

下面我列出仅需要的服务,没有的全部干掉!

这里简单说一下,选定和取消选定用空格,tab 转换!

Atd Crond Irqbalance microcode_ctl network sendmail sshd

查看最后一次系统引导的引导日志

使用 dmesg 命令可以快速查看最后一次系统引导的引导日志。通常它的内容会很多,所以您往往会希望将其通过管道传输到一个阅读器。

dmesg | more 

上面的命令将以分页的方式显示引导信息。

VMware 配置

VMware 设置为vmnet(nat)( 相当于不同的网段连接) ,虚拟机里的linux 设置为动态获取ip(dhcp) 即可

Dynamic Host Configuration Protocol( 动态主机分配协议)

此时主机的虚拟网卡充当路由器的角色

修改 yum 镜像地址

#cd /etc/yum.repos.d/

#cp -a CentOS-Base.repo CentOS-Base.repo.bak

#vim CentOS-Base.repo

代码:

# CentOS-Base.repo
#
# This file uses a new mirrorlist system developed by Lance Davis for CentOS.
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

#released updates
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever - Addons
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons
#baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/
baseurl=http://mirrors.163.com/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

 

yum 速度很快!大家可以试试。

查看系统中所有项目的hibernate 配置文件中的连接字符串

locate -r '.*hibernate.cfg.xml$' |xargs cat |grep connection.url

tomcat 启动 gzip 压缩

vi /usr/local/tomcat/conf/server.xml

    <Connector port="8080" maxHttpHeaderSize="8192"

         maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

       enableLookups="false" redirectPort="8443" acceptCount="100"

       connectionTimeout="20000" disableUploadTimeout="true"

  compression="on" compressionMinSize="2048"

         noCompressionUserAgents="gozilla, traviata"  compressableMimeType="text/html,text/xml" />

加上后面几句红色的

重启 tomcat

/usr/local/tomcat/bin/shutdown.sh

/usr/local/tomcat/bin/startup.sh

tomcat 启动访问日志

  vi /usr/local/ tomcat /conf/server.xml

启用以下内容,日志在 logs 目录

<Valve className="org.apache.catalina.valves.FastCommonAccessLogValve"

                 directory="logs"  prefix="localhost_access_log." suffix=".txt"

                 pattern="combined" resolveHosts="false"/>

 

配置 vncserver

启动vncserver 服务

[root@zdtech init.d]# /etc/init.d/vncserver restart

运行vncserver ,如果第一次配置VNC Server, 会要求提供登录VNC 使用的密码. 以后也可以使用vncpasswd 来修改密码.

  [root@zdtech init.d]# vncserver
New 'zdtech:2 (root)' desktop is zdtech:2

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/zdtech:2.log

Windows 使用VNC viewer 登录了

输入服务器地址:192.168.10.22:2 就可以登陆了,但是现在还不是进入的桌面系统修改配置文件/root/.vnc/xstartup, 使之与下面内容相同

  [root@zdtech init.d]# vi /root/.vnc/xstartup

#!/bin/sh

# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &

修改后再次运行vncserver 命令

[linuxzgf@linuxzgf ~]$ vncserver

New 'localhost.localdomain:1 (test)' desktop is localhost.localdomain:2

Starting applications specified in /home/test/.vnc/xstartup

Log file is /home/test/.vnc/localhost.localdomain:2.log

如果要杀掉vncserver 进程, 可执行vncserver :1 kill ,1 表示displayID

配置 apache awstats

Awstats 是一个非常方便的web 统计访问工具,它分析apache 或者tomcat 产生的日志,得出访问统计信息。

下载 awstats 并安装

wget http://prdownloads .sourceforge.net/awstats/awstats-6.9-1.noarch.rpm

rpm -ivh awstats-6.9-1.noarch.rpm

cd /usr/local/awstats/tools

配置 1

在执行perl awstats_configure.pl 的过程中会出现一个错误,

Error: Failed to open '/usr/share/doc/awstats/examples/wwwroot/cgi-bin/awstats.model.conf' for read.

可以再执行命令前把awstats.model.conf 文件,在安装包中找出此文件并复制到/etc/awstats 目录下

perl awstats_configure.pl # 开始配置

 

 

-----> Need to create a new config file ?

Do you want me to build a new AWStats config/profile

file (required if first install) [y/N] ? y

-----> Define config file name to create

What is the name of your web site or profile analysis ?

Example: www.mysite.com

Example: demo

Your web site, virtual server or profile name:

> cqmc

-----> Define config file path

In which directory do you plan to store your config file(s) ?

Default: /etc/awstats

Directory path to store config file(s) (Enter for default):

>

-----> Create config file '/etc/awstats/awstats.cqmc.conf'

  Config file /etc/awstats/awstats.cqmc.conf created.

-----> Add update process inside a scheduler# 添加一个定时任务,比如每日更新日志

Sorry, configure.pl does not support automatic add to cron yet.

You can do it manually by adding the following command to your cron:

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=cqmc

Or if you have several config files and prefer having only one command:

/usr/local/awstats/tools/awstats_updateall.pl now

Press ENTER to continue...

 

A SIMPLE config file has been created: /etc/awstats/awstats.cqmc.conf

You should have a look inside to check and change manually main parameters.

You can then manually update your statistics for 'cqmc' with command:

> perl awstats.pl -update -config=cqmc

You can also read your statistics for 'cqmc' with URL:

> http://localhost/awstats/awstats.pl?config=cqmc

Press ENTER to finish...

执行完毕。

查看新日志是否生效

cd /usr/local/apache/

rm –rf logs/access_log# 删除访问日志,以前的日志不符合awstats 分析日志要求

cd bin

./ apachectl -k restart# 重启apache

more ../logs/access_log# 查看新日志是否生效,可以自己用浏览器访问看看

配置 2

vi /etc/awstats/ awstats.cqmc.conf

- LogFile           指定 web server 紀錄檔存放的位置。 /usr/local/apache/logs/access_log

- LogFormat   檢查參數值是否為 "1"

- DNSLookup           將參數值設定為 “1”

- DirData                   指定存放統計資料的位置。 /usr/local/apache/logs

- DirCgi             指定 CGI 程式所在的位置。 /usr/local/apache/cgi-bin

- DirIcons         指定小圖示所在的位置。

/usr/local/apache/icons

- SiteDomain 網站主機名稱。 cqmc

-HostAliases  设定主机别名

更新 awstats 分析日志数据

cd /usr/local/awstats/wwwroot/cgi-bin

perl awstats.pl -update -config=cqmc

访问 awstats 分析数据

http://localhost/awstats/awstats.pl?config=cqmc

定时自动更新统计数据

vi /etc/crontab

# 加入如下代码

00 2 * * * root /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=cqmc

# 每天 2 00 更新统计数据

service crond restart# 重启 crond 服务

 

配置访问权限

先介绍用密码来保护服务器上的目录。

首先需要建立一个密码文件。这个文件应该放在不能被网络访问的位置,以避免被下载。例如,如果 /usr/local/apache/htdocs 以外的空间不能被网络访问,那么可以考虑把密码文件放在 /usr/local/apache/passwd 目录中。

Apache 在其安装目录的 bin 子目录中提供了 htpasswd 工具,用于建立密码文件,可以这样使用:

htpasswd -c /usr/local/apache/passwd/passwords rbowen

htpasswd 会要你输入密码,并要求重新输入以进行确认:

 

# htpasswd -c /usr/local/apache/passwd/passwords rbowen

New password: mypassword

Re-type new password: mypassword

Adding password for user rbowen

 

如果 htpasswd 不在搜索路径中,则必须使用完整路径,如: /usr/local/apache/bin/htpasswd

然后修改 httpd.conf .htaccess 文件,指示服务器允许哪些用户访问并向用户索取密码。若要保护 /usr/local/apache/htdocs/secret 目录,则可以将下列指令写入 /usr/local/apache/htdocs/secret/.htaccess 或者 httpd.conf <Directory /usr/local/apache/apache/htdocs/secret> 段。

 

AuthType Basic

AuthName "Restricted Files"

AuthUserFile /usr/local/apache/passwd/passwords

Require user rbowen

让我们逐个解释这些指令。 AuthType 指令选择对用户实施认证的方法,最常用的是由 mod_auth_basic 提供的 Basic 。必须认识到的很重要的一点是, Basic 认证方法并不加密来自用户浏览器的密码,因此,不应该用于高度敏感的数据。 Apache 中还有另一种更安全的认证方法 "AuthType Digest" ,即由 mod_auth_digest 供的摘要认证。目前,只有最新的浏览器版本才支持摘要认证。

 

配置 tomcat awstats

先配置 tomcat 访问日志,模式为 pattern="combined" ,然后配置 awstats

要对另外的日志文档分析,只要在 /etc/awstats/ 下新建立一份 awstats.tomcat.conf 的拷贝,再修改里面的 LogFile 文档位置,再在浏览器中
通过 http://localhost/awstats/awstats.pl?config=tomcat ,使用相应的 conf 文档请求,就能够分析日志了

可以把 awstats_updateall.pl ,加入 cron ,定时跟新所有的日志统计

inotify + rsync 实现 linux 文件实时同步

实现 218.201.39.112 上的数据有改动时自动同步到 218.201.39.113

在安装 inotify-tools 前请先确认你的 linux 内核是否打到了 2.6.13 ,并且在编译时开启了 CONFIG_INOTIFY 选项。你 可以按下面的方式简单的确认这一点: ls /proc/sys/fs/inotify ,如果支持的话会有 max_queued_events max_user_instances max_user_watches 三项。

Fetion

下载 fetion linux 命令行程序

wget http://www.it-adv.net/fetion/fetion_linux_20080402.tar.gz

tar xvf fetion_linux_20080402.tar.gz

下载飞信的 linux 客户端程序 . 解开包后只有一个文件 sms 。不错。这个就是飞信发送短信的程序啦。现在的飞信还是不能用的。因为它需要 libace glibc 库的支持。

检查缺少的库,并安装

ldd sms

下载 lib

32 位官方 lib 库: http://www.it-adv.net/fetion/library32.rar

64 位官方 lib 库: http://www.it-adv.net/fetion/library64_linux.tar.gz

解压后安装

cp *.* /lib/

cp *.* /usr/lib/

飞信使用

./sms -f 13594745404 -p 520167qb -t 13594745404 -m hello

./sms -f 13594745404 -p 520167qb -t 13594745404 -i 1.txt

 

  导出 oracle 数据,并压缩

导出

mknod /tmp/mypipe p
exp userid=scott/tiger file=/tmp/mypipe &
gzip < /tmp/mypipe > exp.dat.gz
rm /tmp/mypipe

导入

mknod /tmp/mypipe p
imp userid=scott/tiger file=/tmp/mypipe &
gunzip < exp.dat.gz > /tmp/mypipe
rm /tmp/mypipe

查看操作系统位数

file /sbin/init

BEA JRockit Mission Control

bea jdk 安装目录有 jrmc 的文件,双击执行

工具

webmin

一个基于浏览器的管理工具

Webmin 是一个用 Perl 编写的基于浏览器的管理应用程序。 Webmin 是可扩展的,除了用于 Linux 之外,还可以用于其他类 Unix 操作系统。安装完成后,可以在本地或者远程浏览器通过一个特定的端口,通常是 10000 ,来进入 Webmin 。它具有可以指向和点击的界面,可以完成各种 Linux 管理任务,包括用户管理、网络防火墙和网络设备的配置。

wget http://prdownloads.sourceforge.net/webadmin/webmin-1.470-1.noarch.rpm

rpm -ivh webmin-1.470-1.noarch.rpm

通过 http://192.168.126.128:10000/ 访问

cron

Linux 操作系统中,计划任务通常由 cron 来承担 ,cron 启动后,它会读取它的所有配置文件(全局性配置文件 /etc/crontab ,以及每个用户的计划任务配置文件),然后 cron 会根据命令和执行时间来按时来调用度工作任务。 cron 配置文件被修改后,想让新文件生效,必须重新 crond 服务器,有两种方法可供选择;

/etc/init.d/crond restart

service crond restart

如果想在 Fedora Redhat 或以这些发行版为基础克隆的发行版,如果想自动开机运行,请用下面的办法

chkconfig --levels 35 crond on

 

全局性配置文件 /etc/crontab ,对于全局性配置文件,我们要用 root 权限来更改。文件说明:

1 * * * * root run-parts /etc/cron.hourly  注:表示每个小时的第一分钟,开始执行 /etc/hourly 目录下的可执行程序或脚本;
2 4 * * * root run-parts /etc/cron.daily  注:表示每天的 4 2 分,开始执行 /etc/cron.daily 目录下的可执行程序或脚本;
22 4 * * 7 root run-parts /etc/cron.weekly 注:每年第 7 个周 4 点我 22 分,开始执行 /etc/cron.weekly 目录下的可执行程序或脚本;
42 4 1 * * root run-parts /etc/cron.monthly 注:每月第 1 天的 4 42 分,开始执行 /etc/cron.monthly 目录下的可执行程序或脚本;

 

增加一个计划任务可以放在全局配置文件里,也可以放在各个包下,比如 /etc/cron.daily 目录下

书写命令为:

分钟 小时 日       [用户名]  命令

我们可以把计划任务写在全局性配置文件中,如果您想把一个计划放入全局性配置文件中,就得改发行版所对应的 cron 全局配置文件,比如 Fedora 5 的全局性配置文件是 /etc/crontab 文件;

每个用户也能定义自己的 cron 配置文件,用 crontab -e 命令来定义;

 

Sysstat

sysstat 的主要用途就是观察服务负载,比如 CPU 和内存的占用率、网络的使用率以及磁盘写入和读取速度等。

这个包一但安装下去,一般包括如下的几个命令可以使用。

Sar iostat sa1 sa2 sadf mpstat sadc sysstat

安装

wget http://pagesperso-orange.fr/sebastien.godard/sysstat-9.0.5.tar.gz

tar -zxvf sysstat-9.0.5.tar.gz

cd sysstat-9.0.5

./configure

make

make install

 

lambda probe

cd /usr/local/tomcat/webapps

wget http://www.lambdaprobe.org/downloads/1.7/probe.1.7b.zip

unzip probe.1.7b.zip

vi /usr/local/tomcat/conf/tomcat-users.xm

# 添加如下行, probe 的用户名和登陆密码

<user username="admin" password="admin1234" roles="manager"/>

# catalina.sh 中加入,启用 jmx

JAVA_OPTS  -Dcom.sun.management.jmxremote

 

安装 groovy

wget http://dist.groovy.codehaus.org/distributions/groovy-binary-1.7.0.zip

cp groovy-binary-1.7.0.zip /usr/local/

unzip groovy-binary-1.7.0.zip

vi /etc/profile

打开 /etc/profile ,加入环境变量

export GROOVY_HOME=/usr/local/groovy-1.7.0

export PATH=$GROOVY_HOME/bin:$PATH

使环境变量生效

. /etc/profile

测试:

[root@cqmc-web1 groovy-1.7.0]# groovy -version

Groovy Version: 1.7.0 JVM: 1.5.0_21

写一个文件测试:

vi  test.groovy

#!/bin/env groovy

println 'hello'

你可能感兴趣的:(linux)