linux 系统的一些使用小技巧

linux 系统的一些使用小技巧,第1张

++实现RedHat非正常关机的自动磁盘修复

  先登录到服务器,然后在/etc/sysconfig里增加一个文件autofsck,内容如下:

  AUTOFSCK_DEF_CHECK=yes

  PROMPT=yes

++改变文件或目录之最后修改时间(变为当前时间)

  执行格式:touch name ( name 可为文件或目录名称。)

++如何设置login后欢迎信息

  修改/etc/motd,往里面写入文本即可。

++如何设置login前欢迎界面

  修改/etc/issue或者issuenet,往里面写入文本。

  issue的内容是出现在本机登录的用户界面上,而issuenet则是在用户通过网络telnet的时候出现。

++如何修改网卡MAC地址

  首先必须关闭网卡设备,否则会报告系统忙,无法更改。

  命令是: /sbin/ifconfig eth0 down

  修改 MAC 地址,这一步较 Windows 中的修改要简单。

  命令是:/sbin/ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE

  重新启用网卡 /sbin/ifconfig eht0 up

  网卡的 MAC 地址更改就完成了

++建立别名/删除别名

  alias cp='cp -i'

  unalias cp

++如何知道某个命令使用了什么库文件

  例如要知道ls使用了什么库文件,可以使用:

  $ ldd /bin/ls

++如何使一个用户进程在用户退出系统后仍然运行

  使用nohup command ,比如:nohup wget -c ftp://testcom/testiso

  #这样即使用户退出系统,wget进程仍然继续运行直到testiso下载完成为止

++如何限制用户的最小密码长度

  修改/etc/logindefs里面的PASS_MIN_LEN的值。比如限制用户最小密码长度是8:

  PASS_MIN_LEN 8

++如何取消root命令历史记录以增加安全性

  为了设置系统不记录每个人执行过的命令,就在/etc/profile里设置:

  HISTFILESIZE=0

  HISTSIZE=0

  或者:

  ln -s /dev/null ~/bash_history

++如何测试硬盘性能

  使用hdparm -t -T /dev/hdX就可以测试硬盘的buffer-cache reads和buffered disk reads两个数据,可以用来当作硬盘性能的参考。

  同时使用hdparm -c3 /dev/hdaX还能设置硬盘以32bit传输,以加快数据传输的速度。

++如何列出一个目录占用的空间

  du或du -s或du -k

  du -S | sort -n 可以迅速发现那个目录是最大的。

  用df可以看到已安装的文件系统的空间大小及剩余空间大小。

  quota -v查看用户的磁盘空间信息,如果你用quota限制了用户空间大小的话。

++如何使新用户首次登陆后强制修改密码

  #useradd -p ‘’ testuser; chage -d 0 testuser

++在Linux中有时开机不自动检查新硬件,新安装的网卡找不到。请问怎么解决?

  答:自动检查新硬件的服务是Kudzu,用户可以用“ntsysv”命令启动该服务。下次重启就会找到用户的新网卡。

++从台湾省的一个 网站找到的,如何让系统密码和samba密码一致,并可以让用户自行修改他们的密码

  使用web界面硗礁ystem passwd 及 samba password

  下载 http://changepasswordsourceforgenet/

  安装就可以了先看README哈

  附加:

  将系统用户批量倒成samba用户

  less /etc/passwd | mksmbpasswdsh ; /etc/samba/smbpasswd

++更改Linux启动时用图形界面还是字符界面

  cd /etc

  vi inittab

  将id:5:initdefault: 其中5表示默认图形界面

  改id:3: initdefault: 3表示字符界面

++配置smb可以被哪些IP所用

  cd /etc/samba

  Vi smbconf

  找到hosts allow = 1921681 1921682 127

  修改其为哪些机器所用,注意IP之间用逗号分开

  举例:

  hosts allow =1921681110,1921681120

++禁止在后台使用CTRL-ALT-DELETE重起机器

  cd /etc/inittab

  vi inittab 在文件找到下面一行

  # Trap CTRL-ALT-DELETE

  ca::ctrlaltdel:/sbin/shutdown -t3 -r now (注释掉这一行)

  如: # Trap CTRL-ALT-DELETE

  #ca::ctrlaltdel:/sbin/shutdown -t3 -r now

++修改主机名

  vi /etc/sysconfig/network

  修改HOSTNAME一行为HOSTNAME=主机名

++查看开机检测的硬件

  dmesg | more

++查看硬盘使用情况

  df –m

++查看目录的大小

  du –sh dirname

++解压小全

  tar xvfj lichuanhuatarbz2

  tar xvfz lichuanhuatargz

  tar xvfz lichuanhuatgz

  tar xvf lichuanhuatar

  unzip lichuanhuazip

  注:压缩 tar cvfz FileNametargz DirName

++显示内存使用情况

  free –m

++显示系统运行了多长时间

  uptime

++显示开机自检的内容命令

  dmesg

++端口的详细列表

  /etc/services

++查看物理信息

  lspci

++文本截面的中文支持

  RH 90自带安装包 zhcon_023_1rh9i386rpm

  安装完成后,执行: zhcon 就可以支持中文了

++linux 控制 windows

  (1)用RH90自己带rdesktop,版本是120

  命令:rdesktop –u user –f 192168170 色默认的是8位

  (2)要达到16色,就要下载新版本130

  rdesktop –a 16 –u lichuanhua –g 800600 192168170

++不让显示器休眠

  setterm –blank 0

++显示最后一个登录到系统的用户

  last

++查看所有帐号的最后登录时间

  lastlog /var/log/lastlog

++查看系统自开通以来所有用户的登录时间和地点

  cat /var/log/secure

++显示当前用户所属信息

  id

++如何知道Apache的连接数目

  ps -ef|grep httpd|wc -l #其它服务可以类推

  netstat -nat|grep -i “80″|wc -l # 以上结果再减1吧

++删除用户帐号的同时,把用户的主目录也一起删除

  userdel -r 用户名

++修改已有用户的信息

  usermod [参数] 用户名

  参数: -c, -d, -m, -g, -G, -s, -u以及-o与adduser参数意义相同

  新参数: -l 新用户名(指定一个新的账号,即将原来的用户名改为新的用户名)

++改变redhat的系统语言/字符集

  改 /etc/sysconfig/i18n 文件,如

  LANG=”en_US”,xwindow会显示英文界面,

  LANG=”zh_CNGB18030″,xwindow会显示中文界面。

  还有一种方法

  cp /etc/sysconfig/i18n $HOME/i18n

  修改 $HOME/i18n 文件,如

  LANG=”en_US”,xwindow会显示英文界面,

  LANG=”zh_CNGB18030″,xwindow会显示中文界面。

  这样就可以改变个人的界面语言,而不影响别的用户

  vi bashrc

  export LANG=zh_CNGB2312

  export LC_ALL=zh_CNGB2312

++cd光盘做成iso文件

  cp /dev/cdrom xxxxiso

++快速观看开机的硬件检测

  dmesg | more

++查看硬盘的使用情况

  df -k 以K为单位显示

  df -h 以人性化单位显示,可以是b,k,m,g,t

++查看目录的大小

  du -sh dirname

  -s 仅显示总计

  -h 以K、M、G为单位,提高信息的可读性。KB、MB、GB是以1024为换算单 位, -H以1000为换算单位。

++查找或删除正在使用某文件的进程

  fuser filename

  fuser -k filename

++linux中让用户的密码必须有一定的长度,并且符合复杂度

  vi /etc/logindefs,改PASS_MIN_LEN

++以不同的用户身份运行程序

  su - username -c “/path/to/command”

  有时候需要运行特殊身份的程序, 就可以让su来做

++ adduser m -g cvsroot -s /bin/false

  添加用户m,参数-s /bin/false表示不允许用户直接登录服务器

  id m

  显示m用户的uid和gid号。

++ 强制卸载rpm包

  rpm -e –nodeps 包名称

  #个别不正常情况下:

  rm -f /var/lib/rpm/__

  rpm –rebuilddb

++拒绝除root用户的其它用户登陆

  touch /etc/nologin

  也可以在/etc/passwd中加!对指定用户限制登陆

++检查自己所属之群组名称

  执行格式:groups

++修改文件/文件夹所属用户组(支持-R)

  chown 组名 文件名(注:组名名勿忘””,“:”也可)

  也可chgrp 组名 文件名

  chown 用户名组名 文件名(同时修改所属用户及用户组)

++用fuser命令查看一下是哪些进程使用这个分区上的文件:

  fuser –v –m /usr

  如果没有什么重要的进程,用以下命令停掉它们:

  fuser -k –v –m /usr

  然后就可以重新挂载这些文件系统了。

++网络唤醒主机

  ether-wake 目标网卡MAC

++如何查找大小为500K到1000K之间的文件

  find / -type f -size +500k -and -size -1000k

++让主机不响应ping

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

  若想恢复就用

  echo 0 /proc/sys/net/ipv4/icmp_echo_ignore_all

  #必须是用命令改,不能是vi修改

++自动注销ROOT

  编辑你的配置文件”vi /etc/profile”,在"HISTSIZE="后面加入下面这行:

  TMOUT=300

  #300,表示300秒

++ls只列出目录

  ls -lF | grep ^d

  ls -lF | grep /$

  ls -F | grep /$

++让cron任务不回馈信息

   cmd /dev/null 21

++lsof(list open files)用法

  lsof -i :xx

  lsof abctxt 显示开启文件abctxt的进程

  lsof -i :22 知道22端口现在运行什么程序

  lsof -c nsd 显示nsd进程现在打开的文件

  lsof -g gid 显示归属gid的进程情况

++改变sshd 的端口

  在/etc/ssh/sshd_config 中加入一行:Port 2222,/etc/initd/sshd restart 重启守护进程

++防止任何人使用su 命令成为root

vi /etc/pamd/su,在开头添加下面两行:

  auth sufficient /lib/security/pam_rootokso

  auth required /lib/security/Pam_wheelso group=wheel

然后把用户添加到“wheel”组:chmod -G10 username

++如何让ssh 只允许指定的用户登录

  方法1:在/etc/pamd/sshd 文件中加入

  auth required pam_listfileso item=user sense=allow file=/etc/sshusers onerr=fail

  然后在/etc 下建立sshusers 文件,加入允许使用ssh 服务的用户名(每一个用户名都要单独一行),重新起动sshd

++利用ssh 复制文件

  1、从A 复制B(推过去)   #scp -rp /path/filename username@remoteIP:/path

  2、从B 复制到A(拉过来)#scp -rp username@remoteIP:/path/filename /path

++linux机器挂载windows上的共享文件

  windows IP:19216811

  mount -t smbfs -o username=massky,password=massky //19216811/dbf /mnt/share

  如想机器重启自动挂载,vi /etc/fstab最后加入:

  //19216811/dbf /mnt/share smbfs defaults,auto,username=massky,password=massky 0 0

++定制linux 提示符

  在bash 中提示符是通过一个环境变量$PS1 指定的。用export $PS1 查看现在的值,比较直

  观常用的提示符可以设定为export PS1=“[/u@/h /W]/$”。其中/u 代表用户名,/h 代表主机

  名,/W 代表当前工作目录的最后一层,如果是普通用户/$则显示$,root 用户显示#。

++清空文件

  [echo] 文件名

++DNS相关

  host -a domaincom #显示相关资讯都列出来

  host domaincom 202106020 #用202106020这台DNS服务器查询domaincom

++前后台任务相关

  jobs 列出属于当前用户的进程

  bg 将进程搬到后台运行(Background)

  fg 将进程搬到前台运行(Foreground)

  万一你运行程序时忘记使用“”了,又不想重新执行。可以先使用ctrl+z挂起程序,然后敲入bg命令,这样程序就在后台继续运行了。

++查找当前目录下七天前的文件,并删除

  find / -mtime +7 -type f -exec rm {} /;

++产生指定大小的文件(bscount)

  dd if=/dev/zero of=filename bs=1000000 count=10

++查找当前目录下文件并更改扩展名

  更改所有ss文件为aa

  # find / -name "ss" -exec rename ss aa '{}' /;

++修改系统时间

  date -s "2005-6-4 17:26"

++让服务器自动同步时间

  0 1 /usr/sbin/ntpdate 2107214544

  或 0 1 rdate -s timenistgov

上一页12 下一页

sunnetftpFtpClient,该类库主要提供了用于建立FTP连接的类。利用这些类的方法,编程人员可以远程登录到FTP服务器,列举该服务器上的目录,设置传输协议,以及传送文件。FtpClient类涵盖了几乎所有FTP的功能,FtpClient的实例变量保存了有关建立"代理"的各种信息。下面给出了这些实例变量:

  public static boolean useFtpProxy

  这个变量用于表明FTP传输过程中是否使用了一个代理,因此,它实际上是一个标记,此标记若为TRUE,表明使用了一个代理主机。

  public static String ftpProxyHost

  此变量只有在变量useFtpProxy为TRUE时才有效,用于保存代理主机名。

  public static int ftpProxyPort  此变量只有在变量useFtpProxy为TRUE时才有效,用于保存代理主机的端口地址。

  FtpClient有三种不同形式的构造函数,如下所示:

  1、public FtpClient(String hostname,int port)

   此构造函数利用给出的主机名和端口号建立一条FTP连接。

  2、public FtpClient(String hostname)

  此构造函数利用给出的主机名建立一条FTP连接,使用默认端口号。

  3、FtpClient()

  此构造函数将创建一FtpClient类,但不建立FTP连接。这时,FTP连接可以用openServer方法建立。

  一旦建立了类FtpClient,就可以用这个类的方法来打开与FTP服务器的连接。类ftpClient提供了如下两个可用于打开与FTP服务器之间的连接的方法。

  public void openServer(String hostname)

  这个方法用于建立一条与指定主机上的FTP服务器的连接,使用默认端口号。

  public void openServer(String host,int port)

  这个方法用于建立一条与指定主机、指定端口上的FTP服务器的连接。

  打开连接之后,接下来的工作是注册到FTP服务器。这时需要利用下面的方法。

  public void login(String username,String password)

  此方法利用参数username和password登录到FTP服务器。使用过Intemet的用户应该知道,匿名FTP服务器的登录用户名为anonymous,密码一般用自己的电子邮件地址。

  下面是FtpClient类所提供的一些控制命令。

  public void cd(String remoteDirectory):该命令用于把远程系统上的目录切换到参数remoteDirectory所指定的目录。

  public void cdUp():该命令用于把远程系统上的目录切换到上一级目录。

  public String pwd():该命令可显示远程系统上的目录状态。

  public void binary():该命令可把传输格式设置为二进制格式。

  public void ascii():该命令可把传输协议设置为ASCII码格式。

  public void rename(String string,String string1):该命令可对远程系统上的目录或者文件进行重命名操作。

  除了上述方法外,类FtpClient还提供了可用于传递并检索目录清单和文件的若干方法。这些方法返回的是可供读或写的输入、输出流。下面是其中一些主要的方法。

  public TelnetInputStream list()

  返回与远程机器上当前目录相对应的输入流。

  public TelnetInputStream get(String filename)

  获取远程机器上的文件filename,借助TelnetInputStream把该文件传送到本地。

  public TelnetOutputStream put(String filename)

  以写方式打开一输出流,通过这一输出流把文件filename传送到远程计算机

package myUtil;

import javaioDataInputStream;

import javaioFile;

import javaioFileInputStream;

import javaioFileOutputStream;

import javaioIOException;

import javaioOutputStream;

import javautilArrayList;

import javautilList;

import javautilStringTokenizer;

import sunnetTelnetInputStream;

import sunnetTelnetOutputStream;

import sunnetftpFtpClient;

/

ftp上传,下载

@author why 2009-07-30

/

public class FtpUtil {

private String ip = "";

private String username = "";

private String password = "";

private int port = -1;

private String path = "";

FtpClient ftpClient = null;

OutputStream os = null;

FileInputStream is = null;

public FtpUtil(String serverIP, String username, String password) {

thisip = serverIP;

thisusername = username;

thispassword = password;

}

public FtpUtil(String serverIP, int port, String username, String password) {

thisip = serverIP;

thisusername = username;

thispassword = password;

thisport = port;

}

/

连接ftp服务器

@throws IOException

/

public boolean connectServer() {

ftpClient = new FtpClient();

try {

if (thisport != -1) {

ftpClientopenServer(thisip, thisport);

} else {

ftpClientopenServer(thisip);

}

ftpClientlogin(thisusername, thispassword);

if (thispathlength() != 0) {

ftpClientcd(thispath);// path是ftp服务下主目录的子目录

}

ftpClientbinary();// 用2进制上传、下载

Systemoutprintln("已登录到\"" + ftpClientpwd() + "\"目录");

return true;

} catch (IOException e) {

eprintStackTrace();

return false;

}

}

/

断开与ftp服务器连接

@throws IOException

/

public boolean closeServer() {

try {

if (is != null) {

isclose();

}

if (os != null) {

osclose();

}

if (ftpClient != null) {

ftpClientcloseServer();

}

Systemoutprintln("已从服务器断开");

return true;

} catch (IOException e) {

eprintStackTrace();

return false;

}

}

/

检查文件夹在当前目录下是否存在

@param dir

@return

/

private boolean isDirExist(String dir) {

String pwd = "";

try {

pwd = ftpClientpwd();

ftpClientcd(dir);

ftpClientcd(pwd);

} catch (Exception e) {

return false;

}

return true;

}

/

在当前目录下创建文件夹

@param dir

@return

@throws Exception

/

private boolean createDir(String dir) {

try {

ftpClientascii();

StringTokenizer s = new StringTokenizer(dir, "/"); // sign

scountTokens();

String pathName = ftpClientpwd();

while (shasMoreElements()) {

pathName = pathName + "/" + (String) snextElement();

try {

ftpClientsendServer("MKD " + pathName + "\r\n");

} catch (Exception e) {

e = null;

return false;

}

ftpClientreadServerResponse();

}

ftpClientbinary();

return true;

} catch (IOException e1) {

e1printStackTrace();

return false;

}

}

/

ftp上传 如果服务器段已存在名为filename的文件夹,该文件夹中与要上传的文件夹中同名的文件将被替换

@param filename

要上传的文件(或文件夹)名

@return

@throws Exception

/

public boolean upload(String filename) {

String newname = "";

if (filenameindexOf("/") > -1) {

newname = filenamesubstring(filenamelastIndexOf("/") + 1);

} else {

newname = filename;

}

return upload(filename, newname);

}

/

ftp上传 如果服务器段已存在名为newName的文件夹,该文件夹中与要上传的文件夹中同名的文件将被替换

@param fileName

要上传的文件(或文件夹)名

@param newName

服务器段要生成的文件(或文件夹)名

@return

/

public boolean upload(String fileName, String newName) {

try {

String savefilename = new String(fileNamegetBytes("GBK"),

"GBK");

File file_in = new File(savefilename);// 打开本地待长传的文件

if (!file_inexists()) {

throw new Exception("此文件或文件夹[" + file_ingetName() + "]有误或不存在!");

}

if (file_inisDirectory()) {

upload(file_ingetPath(), newName, ftpClientpwd());

} else {

uploadFile(file_ingetPath(), newName);

}

if (is != null) {

isclose();

}

if (os != null) {

osclose();

}

return true;

} catch (Exception e) {

eprintStackTrace();

Systemerrprintln("Exception e in Ftp upload(): " + etoString());

return false;

} finally {

try {

if (is != null) {

isclose();

}

if (os != null) {

osclose();

}

} catch (IOException e) {

eprintStackTrace();

}

}

}

/

真正用于上传的方法

@param fileName

@param newName

@param path

@throws Exception

/

private void upload(String fileName, String newName, String path)

throws Exception {

String savefilename = new String(fileNamegetBytes("ISO-8859-1"), "GBK");

File file_in = new File(savefilename);// 打开本地待长传的文件

if (!file_inexists()) {

throw new Exception("此文件或文件夹[" + file_ingetName() + "]有误或不存在!");

}

if (file_inisDirectory()) {

if (!isDirExist(newName)) {

createDir(newName);

}

ftpClientcd(newName);

File sourceFile[] = file_inlistFiles();

for (int i = 0; i < sourceFilelength; i++) {

if (!sourceFile[i]exists()) {

continue;

}

if (sourceFile[i]isDirectory()) {

thisupload(sourceFile[i]getPath(), sourceFile[i]

getName(), path + "/" + newName);

} else {

thisuploadFile(sourceFile[i]getPath(), sourceFile[i]

getName());

}

}

} else {

uploadFile(file_ingetPath(), newName);

}

ftpClientcd(path);

}

/

upload 上传文件

@param filename

要上传的文件名

@param newname

上传后的新文件名

@return -1 文件不存在 >=0 成功上传,返回文件的大小

@throws Exception

/

public long uploadFile(String filename, String newname) throws Exception {

long result = 0;

TelnetOutputStream os = null;

FileInputStream is = null;

try {

javaioFile file_in = new javaioFile(filename);

if (!file_inexists())

return -1;

os = ftpClientput(newname);

result = file_inlength();

is = new FileInputStream(file_in);

byte[] bytes = new byte[1024];

int c;

while ((c = isread(bytes)) != -1) {

oswrite(bytes, 0, c);

}

} finally {

if (is != null) {

isclose();

}

if (os != null) {

osclose();

}

}

return result;

}

/

从ftp下载文件到本地

@param filename

服务器上的文件名

@param newfilename

本地生成的文件名

@return

@throws Exception

/

public long downloadFile(String filename, String newfilename) {

long result = 0;

TelnetInputStream is = null;

FileOutputStream os = null;

try {

is = ftpClientget(filename);

javaioFile outfile = new javaioFile(newfilename);

os = new FileOutputStream(outfile);

byte[] bytes = new byte[1024];

int c;

while ((c = isread(bytes)) != -1) {

oswrite(bytes, 0, c);

result = result + c;

}

} catch (IOException e) {

eprintStackTrace();

} finally {

try {

if (is != null) {

isclose();

}

if (os != null) {

osclose();

}

} catch (IOException e) {

eprintStackTrace();

}

}

return result;

}

/

取得相对于当前连接目录的某个目录下所有文件列表

@param path

@return

/

public List getFileList(String path) {

List list = new ArrayList();

DataInputStream dis;

try {

dis = new DataInputStream(ftpClientnameList(thispath + path));

String filename = "";

while ((filename = disreadLine()) != null) {

listadd(filename);

}

} catch (IOException e) {

eprintStackTrace();

}

return list;

}

public static void main(String[] args) {

FtpUtil ftp = new FtpUtil("1921681111", "111", "1111");

ftpconnectServer();

boolean result = ftpupload("C:/Documents and Settings/ipanel/桌面/java/Hibernate_HQLdocx", "amuse/audioTest/music/Hibernate_HQLdocx");

Systemoutprintln(result "上传成功!" : "上传失败!");

ftpcloseServer();

/

FTP远程命令列表 USER PORT RETR ALLO DELE SITE XMKD CDUP FEAT PASS PASV STOR

REST CWD STAT RMD XCUP OPTS ACCT TYPE APPE RNFR XCWD HELP XRMD STOU

AUTH REIN STRU SMNT RNTO LIST NOOP PWD SIZE PBSZ QUIT MODE SYST ABOR

NLST MKD XPWD MDTM PROT

在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上\r\n

ftpclientsendServer("XMKD /test/bb\r\n"); //执行服务器上的FTP命令

ftpclientreadServerResponse一定要在sendServer后调用

nameList("/test")获取指目录下的文件列表 XMKD建立目录,当目录存在的情况下再次创建目录时报错 XRMD删除目录

DELE删除文件

/

}

}

Android所提供的命令行工具是非常有限的, 想要使用更多和熟悉的工具,那么让Busybox来帮助你把!

下载 Busybox

使用非常简单

# mkdir /data/busybox, on your G1 terminal

复制busybox到一下目录

/data/busybox/busybox

记得执行 # chmod 655 busybox

安装将会建立自动建立软链接

# cd /data/busybox

/busybox –install

为了更方便的使用,可以执行以下命令,就可以方便的在任意目录执行相关命令

# export PATH=/data/busybox:$PATH

———————–

查看android linux内核版本

# busybox uname -a

Linux localhost 2625-01843-gfea26b0 #6 PREEMPT Mon Oct 6 14:13:36 PDT 2008 arm v6l unknown

启动一个httpd服务器

#busybox httpd

启动后你在模拟器的web浏览器上访问 http://127001 即可

执行运行

#busybox

即可查看busybox支持的命令。

busybox支持的命令包括:

[, [[, addgroup, adduser, adjtimex, ar, arp, arping, ash,

awk, basename, bunzip2, bzcat, bzip2, cal, cat, catv,

chattr, chgrp, chmod, chown, chpasswd, chpst, chroot,

chrt, chvt, cksum, clear, cmp, comm, cp, cpio, crond,

crontab, cryptpw, cut, date, dc, dd, deallocvt, delgroup,

deluser, df, dhcprelay, diff, dirname, dmesg, dnsd, dos2unix,

du, dumpkmap, dumpleases, echo, ed, egrep, eject, env,

envdir, envuidgid, expand, expr, fakeidentd, false, fbset,

fdflush, fdformat, fdisk, fgrep, find, fold, free, freeramdisk,

fsck, fsckminix, ftpget, ftpput, fuser, getopt, getty,

grep, gunzip, gzip, halt, hdparm, head, hexdump, hostid,

hostname, httpd, hwclock, id, ifconfig, ifdown, ifup,

inetd, init, insmod, install, ip, ipaddr, ipcalc, ipcrm,

ipcs, iplink, iproute, iprule, iptunnel, kbd_mode, kill,

killall, killall5, klogd, last, length, less, linux32,

linux64, linuxrc, ln, loadfont, loadkmap, logger, login,

logname, logread, losetup, ls, lsattr, lsmod, lzmacat,

makedevs, md5sum, mdev, mesg, microcom, mkdir, mkfifo,

mkfsminix, mknod, mkswap, mktemp, modprobe, more, mount,

mountpoint, mt, mv, nameif, nc, netstat, nice, nmeter,

nohup, nslookup, od, openvt, passwd, patch, pgrep, pidof,

ping, ping6, pipe_progress, pivot_root, pkill, poweroff,

printenv, printf, ps, pscan, pwd, raidautorun, rdate,

readahead, readlink, readprofile, realpath, reboot, renice,

reset, resize, rm, rmdir, rmmod, route, rpm, rpm2cpio,

run-parts, runlevel, runsv, runsvdir, rx, sed, seq, setarch,

setconsole, setkeycodes, setlogcons, setsid, setuidgid,

sh, sha1sum, slattach, sleep, softlimit, sort, split,

start-stop-daemon, stat, strings, stty, su, sulogin, sum,

sv, svlogd, swapoff, swapon, switch_root, sync, sysctl,

syslogd, tail, tar, tcpsvd, tee, telnet, telnetd, test,

tftp, time, top, touch, tr, traceroute, true, tty, ttysize,

udhcpc, udhcpd, udpsvd, umount, uname, uncompress, unexpand,

uniq, unix2dos, unlzma, unzip, uptime, usleep, uudecode,

uuencode, vconfig, vi, vlock, watch, watchdog, wc, wget,

which, who, whoami, xargs, yes, zcat, zcip

方法1:

与一个已知的时间服务器同步

复制代码

代码如下:

ntpdate timenistgov

其中 timenistgov 是一个时间服务器

删除本地时间并设置时区为上海

复制代码

代码如下:

rm -rf /etc/localtime

ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

方法2:

linux自动同步时间

vi /etc/crontab

加上一句:

复制代码

代码如下:

00 0 1 root rdate -s timenistgov

配置时间服务器配置(192168101)

复制代码

代码如下:

1)、# rpm -ivh ntp-412-4EL31i386rpm

2)、# vi /etc/ntpconf

注释一行:

restrict default ignore

加入一行:

复制代码

代码如下:

restrict 192168100 mask 2552552550 notrust nomodify notrap

3)、# vi /etc/ntp/step-tickers

加入一行:

poolntporg

这样每次ntpd启动时,会自动连接该国际标准时间服务器;

4)、# service ntpd start

5)、# netstat -an |grep 123

确保该端口以udp方式开放

时间客户端配置(192168102)

1)、# ntpdate 192168102

应该显示同步成功

2)、# crond -e

加入

复制代码

代码如下:

0-59/10 /usr/sbin/ntpdate 192168101

每隔10分钟同步一次时间

--存储过程编写错误 正确的如下:

CREATE OR REPLACE FUNCTION abcUMSDETAIL_TRANSDAYCUPS (rdate in date)

return number

is

PRAGMA AUTONOMOUS_TRANSACTION;

begin

return 0;

end;

--使用另一个用户执行,结果为: 0

Select abcUMSDETAIL_TRANSDAYCUPS(date'2012-1-1') from dual;

编辑 /etc/ntpconf ,并更改以下缓冲池根据您的选择。默认情况下,这些服务器的配置:

# Use servers from the NTP Pool Project Approved by Ubuntu Technical Board

# on 2011-02-08 (LP: #104525) See http://wwwpoolntporg/joinhtml for

# more information

server 0ubuntupoolntporg

server 1ubuntupoolntporg

server 2ubuntupoolntporg

server 3ubuntupoolntporg

刷新NTP服务器

在ntpconf更改后,重新载入你的 ntp 服务

$ sudo service ntp reload

打开防火墙端口

NTP服务器使用端口123的服务请求。因此,我们需要在防火墙中打开123端口。

iptables的用户:

$ sudo iptables -A INPUT -m state --state NEW -p tcp --dport 123 -j ACCEPT

UFW用户:

$ sudo ufw allow 123/tcp

在客户端同步时间

使所有配置重启生效后,现在通过同步客户端系统验证服务器配置。例如,如果你的服务器的IP是1921681100,然后通过客户端系统上运行的终端下面的命令。

$ ntpdate -s 1921681100

Linux自带了ntp服务 -- /etc/initd/ntpd,这个服务不仅可以设置让本机和某台/某些机器做时间同步,他本身还可以扮演一个time server的角色,让其他机器和他同步时间。

配置文件就是/etc/ntpconf。

为了测试,设置让node2 -- 1921681102和node1 -- 1921681101做时间同步。

第一步,

node1做time server,node1本身不和其他机器时间同步,就是取本地时间。

所以,先把node1机器的时间调准了:

[root@node1 ~]date -s 08/03/2011 

[root@node1 ~]date -s 11:12:00

[root@node1 ~]clock -w

[root@node1 ~]hwclock --systohc

后两个命令是把设置的时间写到硬件时间中去(也就是CMOS里面的时间)。

第二步,

然后将node1配置成一个time server,修改/etc/ntpconf,

[root@node1 ~]vi /etc/ntpconf

其他的配置不怎么需要改,只需要关注restrict的配置:

1 注释掉原来的restrict default ignore这一行,这一行本身是不响应任何的ntp更新请求,其实也就是禁用了本机的ntp server的功能,所以需要注释掉。

2 加入:restrict 19216810 mask 2552552550 -- 让19216810/24网段上的机器能和本机做时间同步

3 这样就可以了,记得下面的:

server 12712710 # local clock

fudge 12712710 stratum 10

这两行需要,这是让本机的ntpd和本地硬件时间同步。

当然,我们也可以添加server xxxxxxxxxxxx,让他和其他的time server时间同步。

4 /etc/initd/ntpd restart

5 chkconfig ntpd on

6 修改iptables配置,将tcp和udp 123端口开放,这是ntp需要的端口,在/etc/services中可以查到这个端口。

第三步,

这样node1就成为一台time server了,现在我们配置node2这台机器,也是修改/etc/ntpconf ,

[root@node2 ~]vi /etc/ntpconf

1 restrict default ignore这行保留为注释状态,因为sales不需要做time server

2 注释掉server 12712710, fudge 12712710 stratum 10这两行,因为这台机器不需要和本地硬件时钟同步了。

3 加入server 1921681101这行,和node1机器同步。

这样就OK了。看看时间,已经和node1同步了。往后默认配置好像是5分钟和time server同步一次。ntpdate命令是显式的和某台机器做时间同步,以前将ntpdate放到crontab中定期同步也是可以的,但是既然ntpd本身就可以做这个时间

第四步,将ntpdate放到crontab中定期步也是可以的

[root@node2 ~]#vi ntpupdatesh

/usr/sbin/ntpdate 1921681101

[root@node2 ~]#chmod 755 ntpupdatesh

[root@node2 ~]#crontab -e

/1 /root/ntpupdatesh

[root@node2 ~]#/etc/initd/crond restart

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » linux 系统的一些使用小技巧

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情