查看是否64位
$su - root
#file /sbin/init
查看liunx版本
cat /proc/version
-----------------------------------
设置系统编码
/etc/profile
最后加上:
export LC_ALL="zh_CN.UTF-8"
export LANG="zh_CN.UTF-8"
然后 source /etc/profile
--------------卸载已经安装的jdk-------------------------
首先,在终端中输入“rpm -qa|grep gcj”,查看gcj的版本号,在这里得到的结果是:
java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
libgcj-4.1.2-48.el5
其次,卸载系统自带jdk。在终端中输入
“yum -y remove java java-1.4.2-gcj-compat-1.4.2.0-40jpp.115”,然后等待,等待系统卸载完自带的jdk。最终在终端中显示“Complete!”,卸载完成。
===============检测Linux服务器开放了哪些端口====================
前言:
常常看到有些人想要知道自己的Linux主机到底开放了多少Port?要如何来检测呢。通常我们知道的Port有下面这几个:
* ftp:21
* telnet:23
* smtp:25
* http:80
* pop-3:110
* netbios-ssn:139
* squid:3128
* mysql:3306
端口当然不只这些个,如何知道Port是否被开启呢?
检测你开启的服务有哪些?使用功能强大的 netstat 指令。
在做为服务器的Linux系统中,服务项目是越少越好!这样可以减少避免不必要的入侵通道。要了解自己的系统当中的服务项目,最简便的方法就是使用nestat 了!这个命令不但简单(是每一个Linux系统都会安装的套件!),而且功能也是很不错的,例如我们在检查WWW使用者的人数时,就很需要这个命令!好了,我们来看一下netstat 的使用方法:
复制内容到剪贴板
代码:
# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address Stat e
tcp 0 0 ::ffff:192.168.1.178:ssh ::ffff:192.168.1.175:4235 ESTA BLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 10 [ ] DGRAM 4701 /dev/log
unix 2 [ ] DGRAM 5846 @/var/run/hal/hotplug_s ocket
unix 2 [ ] DGRAM 2901 @udevd
unix 3 [ ] STREAM CONNECTED 5845 /var/run/dbus/system_bu s_socket
unix 3 [ ] STREAM CONNECTED 5844
unix 3 [ ] STREAM CONNECTED 5792 /var/run/dbus/system_bu s_socket
unix 3 [ ] STREAM CONNECTED 5791
unix 3 [ ] STREAM CONNECTED 5724
unix 3 [ ] STREAM CONNECTED 5723
如上所示,单纯使用 netstat 的时候,仅 列出目前已经连通的服务与服务名称。所以你可以看到,由于目前仅有一个ssh连接成功,所有就只显示出一个 ESTABLISHED(连接中的意思)。 上面的 :
复制内容到剪贴板
代码:
tcp 0 0 ::ffff:192.168.1.178:ssh ::ffff:192.168.1.175:4235
这一行表示有一个SSH的服务开放,是由远端的 192.168.1.175这个IP连接到 192.168.1.178 的。而连接的端口是4235。那如果我需要将所有的项目列出来呢?
复制内容到剪贴板
代码:
# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address Stat e
tcp 0 0 *:32768 *:* LIST EN
tcp 0 0 *:sunrpc *:* LIST EN
tcp 0 0 *:auth *:* LIST EN
tcp 0 0 localhost.localdomain:ipp *:* LIST EN
tcp 0 0 localhost.localdomain:smtp *:* LIST EN
tcp 0 0 *:ssh *:* LIST EN
tcp 0 0 ::ffff:192.168.1.178:ssh ::ffff:192.168.1.175:1237 ESTA BLISHED
udp 0 0 *:32768 *:*
udp 0 0 *:955 *:*
udp 0 0 *:sunrpc *:*
udp 0 0 *:ipp *:*
如上所示,加入 -a(all)就可以了。将所有在机器上 (监听 Listem)或者是(已建立连接的)的服务通通列出的意思。不过,服务的名称已经使用 /etc/services 里面的名称了,而不是使用 port 的数字!目前我主机上面的服务共开放了:sunrpc、auth、ssh、ipp、smtp.等服务(就是 Listen的那几个服务)至于已经建立的服务就只有 SSH 这一个!那如果我想知道开放了哪些端口号呢?呵呵,就使用下面的命令吧!
复制内容到剪贴板
代码:
# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:32768 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:113 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 52 ::ffff:192.168.1.178:22 ::ffff:192.168.1.175:1237 ESTABLISHED
udp 0 0 0.0.0.0:32768 0.0.0.0:*
udp 0 0 0.0.0.0:955 0.0.0.0:*
udp 0 0 0.0.0.0:111 0.0.0.0:*
udp 0 0 0.0.0.0:631 0.0.0.0:*
如上所示,我接通的服务只有22这一个,而其它的你可以参照上面的命令输出结果来对照,所以你就可以知道:smtp为25端口。因此,通过使用此命令,就可以轻易的子解目前主机的运作状况与服务状态了。当然了,netstat的用途不止于此,你可以使用 man netstat 来查阅一番喔!相信对你的主机会有更大的了解。
相信有不少的朋友都会有这个困扰,就是要怎样删除已经建立的联机呢?因为总有些不速之客会连到您的主机来进行一些破坏的工作!或者是您根本不想让对方联机过来!呵呵!还记得 鸟哥的 Linux 私房菜--基础学习篇内的资源管理 里面提到的几个常用的指令吧!?那就是找出那个联机程序的 PID ,然后给他 kill 掉就是了!简单呀!不过,大问题是『我要怎样找出联机的 PID 呀!?』呵呵!由于 PID 的管理与整体的系统资源有关,这个时候,虽然可以使用 netstat 来观察 PID ,不过只有 root 可以观察到联机状态的 PID 号码呦!( 注:还记得资源管理提及的 PID 概念吗?就是说,在 Linux 系统之内,每个『程序』系统都会给予一个号码来管理!这个就是 PID 啰!)
复制内容到剪贴板
代码:
# netstat -ap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:ssh *:* LISTEN 32149/sshd
tcp 0 284 140.116.141.19:ssh 192.168.1.11:1391 ESTABLISHED 24751/sshd
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 7 [ ] DGRAM 944 509/syslogd /dev/log
unix 2 [ ] DGRAM 3035915 16648/xinetd
unix 2 [ ] DGRAM 739227 5951/pppoe
unix 2 [ ] DGRAM 739189 5949/pppd
unix 2 [ ] DGRAM 1070 628/crond
unix 2 [ ] DGRAM 953 514/klogd
unix 2 [ ] STREAM CONNECTED 690 1/init [3]
看到上面那个斜体字的联机建立的网络状态了吗?嘿嘿!最后面一栏就是显示那个 PID/Program name ,那个 PID ( 上面是 24751 )也就是我们要来砍掉的啦!这个时候,如果要将该联机砍掉时,就直接以 kill 来做吧!
复制内容到剪贴板
代码:
# kill -9 24751
这样就能将该联机给他『踢出去』您的主机啦!! ^_^""
======================================================
1. 查看内核版本命令:
1) # cat /proc/version
Linux version 2.6.9-22.ELsmp (bhcompile@crowe.devel.redhat.com) (gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)) #1 SMP Mon Sep 19 18:00:54 EDT 2005
2) # uname -a
Linux q1test01 2.6.9-22.ELsmp #1 SMP Mon Sep 19 18:00:54 EDT 2005 x86_64 x86_64 x86_64 GNU/Linux
3) # uname -r
2.6.9-22.ELsmp
2. 查看linux版本:
1) 登录到服务器执行 lsb_release -a ,即可列出所有版本信息,例如:
# lsb_release -a
LSB Version: :core-3.0-amd64:core-3.0-ia32:core-3.0-noarch:graphics-3.0-amd64:graphics-3.0-
ia32:graphics-3.0-noarch
Distributor ID: RedHatEnterpriseAS
Description: Red Hat Enterprise Linux AS release 4 (Nahant Update 2)
Release: 4
Codename: NahantUpdate2
注:这个命令适用于所有的linux,包括Redhat、SuSE、Debian等发行版。
2) 登录到linux执行cat /etc/issue,例如如下:
# cat /etc/issue
Red Hat Enterprise Linux AS release 4 (Nahant Update 2)
Kernel \r on an \m
3) 登录到linux执行cat /etc/redhat-release ,例如如下:
# cat /etc/redhat-release
Red Hat Enterprise Linux AS release 4 (Nahant Update 2)
注:这种方式下可以直接看到具体的版本号,比如 AS4 Update 1
4)登录到linux执行rpm -q redhat-release ,例如如下:
# rpm -q redhat-release
redhat-release-4AS-3
cpu信息
cat /proc/cpuinfo
===================安装crontab===============
crontab是Linux系统下的定时运行程序,非常有用,一般系统都自带。这里系统是CentOS5.7。
如果没有的话要先安装:
yum install vixie-cron crontabs
1、crontab用法
一般格式:
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
常用选项:
-u :指定使用的用户。
-e :编辑该用户的定时任务。
-l :列出该用户的定时任务。
-r :删除该用户的定时任务。
-i :删除该用户定时任务时给予提示。
-s :附加SELinux security context string控制访问。
编辑本用户的定时任务:
crontab -e
2、crontab格式
基本格式:
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
3、crontab文件举例:
10 7 * * 4 /home/test.sh
每周4的7:10执行/home/test.sh脚本。
0 23 1 * * /etc/init.d/httpd restart
每月1日23:00重启apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18:00至23:00之间每隔30分钟重启lighttpd。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启lighttpd。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4:45重启lighttpd。
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启lighttpd。
4、加入开机自动启动:
chkconfig --level 345 crond on
5、
用户执行crontab -e的内容是写在/var/spool/cron/目录内。
6、在/etc下有:
cron.daily
cron.hourly
cron.monthly
cron.weekly
这四个目录,预设了每小时、每天、每周以及每个月的定时任务。可以把要执行的命令写在脚本里仍到相应的目录中。
7、/etc/crontab配置文件:
1)可以直接把定时任务写在该文件内,格式为:
分 时 日 月 周 用户名 命令
例如:
30 2 * * * root /etc/init.d/httpd restart
PS:crontab内的命令要写绝对路径。
2)MAILTO=root是用于crontab执行后发邮件到root的邮箱,路径是/var/spool/mail。
可以把MAILTO后的值改成自己的邮箱。
8、/etc/cron.allow和/etc/cron.deny文件用于限制使用crontab的用户。
9、VPS上执行crontab -e时出错:
/bin/sh: /bin/vi: No such file or directory
crontab: "/bin/vi" exited with status 127
是因为默认编辑器没有设置:
vim /etc/profile
在最后加入:
EDITOR='vim'
export EDITOR
10、crontab日志文件路径:
/var/log/cron
11、crontab设置好后要重启crond服务,使设置生效:
service crond restart
参考资料:
http://www.live-in.org/archives/1028.html
============我增加nginx 日志按天分开===============
# more /usr/local/nginx/sbin/log_by_day.sh
#!/bin/bash
# 请将当前脚本的运行时间设置成 00:00
# 这里是日志保存路径
logs_path="/data/nginx/logs/"
#分割日志
mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log
mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
mv ${logs_path}error.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/error_$(date -d "yesterday" +"%Y%m%d").log
#重启nginx
/usr/local/nginx/sbin/nginx -s reload
-----------------
conf/ conf.zip
# more /usr/local/nginx/conf/nginx.conf
#user nginx;
user nobody nobody;
worker_processes 1;
[color=red] error_log /data/nginx/logs/error.log;[/color]
#error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /usr/local/nginx/conf/mime.types;
default_type application/octet-stream;
include /usr/local/nginx/conf/config/proxy.conf;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
##access_log /var/log/nginx/access.log main;
[color=red] access_log /data/nginx/logs/access.log main;[/color]
-------------加入任务---------------
crontab -e
输入
00 00 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh
执行
/sbin/service crond restart