2011-07-14 14:56:47 xbiii3s 阅读数 1302
在终端 touch test
chmod a+ test
就生成了test的unix可执行文件
2011-05-19 11:25:11 panhongppa 阅读数 39

package com.nantian.itbms;

/**
 * 执行windows 命令或unix shell命令
 * @author panhong
 *
 */
public class WinUnixShell {

 public static void main(String[] args0) {
   String cmd="ping www.163.com";
  // String cmd="ipconfig";
  //String cmd = "ping 192.168.0.1";
  // String cmd="ipconfig";
  String result;
  try {
   result = exec(cmd);
   System.out.println("返回:\r\n" + result);
  } catch (Exception e) {
   System.out.println("执行出错:\r\n" + e.getMessage());
  }

 }

 /**
  * 执行window cmd或unix shell命令,如ipconfig
  *
  * @param youCmd
  * @return 执行命令状态

  * @throws Exception
  */
 public static String exec(String youCmd) throws Exception {
  String msg = null;
  if (youCmd == null || youCmd.length() < 1) {
   throw new Exception("请输入有效命令行命令");
  }

  try {
   hostInfo hostInfo = new hostInfo();
   String osName = hostInfo.getsysTYpe();
   String[] cmd = new String[3];
   if (("Windows 2000").equalsIgnoreCase(osName)
     || "Windows XP".equalsIgnoreCase(osName)) {
    cmd[0] = "cmd.exe";
    cmd[1] = "/C";
    cmd[2] = youCmd;
   } else if (osName.equals("Windows 95")) {
    cmd[0] = "command.com";
    cmd[1] = "/C";
    cmd[2] = youCmd;
   }
   if(osName.indexOf("unix")!=-1){ //unix操作系统
    cmd[0] = "ls";
    cmd[1] = "/C";
    cmd[2] = youCmd;
   }

    System.out.println("cmd:\r\n" + cmd[0] + " " + cmd[1] + " " +
    cmd[2]);
   Runtime rt = Runtime.getRuntime();
   Process proc = rt.exec(cmd);
   InputStreamPipe errorGobbler = new InputStreamPipe(proc
     .getErrorStream(), "ERROR");
   InputStreamPipe outputGobbler = new InputStreamPipe(proc
     .getInputStream(), "OUTPUT");
   errorGobbler.start();
   outputGobbler.start();

   int exitVal = proc.waitFor();// 等待事情干完,返回值0表示正确返回
   if (exitVal != 0) {
    msg = "失败";
    throw new Exception(errorGobbler.getOutputMsg()
      + "(异常退出值exitVal=" + exitVal + ")");
   } else {
    msg = outputGobbler.getOutputMsg();//返回命令执行结果
   }
  } catch (Exception e) {
   throw new Exception(e.getMessage());
  }

  return msg;
 }
}

2007-10-13 22:42:00 tianyi_lee 阅读数 1579

在unix下执行exe可执行程序:

命令如下:./name

name是exe的名字,注意没有后缀 

2013-01-22 15:50:13 hualusiyu 阅读数 1002
前面介绍过在LoadRunner的Java协议实现“使用SSH连接Linux”,当然连接之后的故事由你主导。
今天要讲的,是一个非Java版本。是对“在LoadRunner中执行命令行程序之:popen()取代system()”的一个升华。
     下面的脚本,是在LoadRunner里连接Linux/Unix远程服务器,收集其磁盘IO的负载到测试结果中。
涉及到三个知识点:
    1、LoadRunner自带“PuTTY Link”的使用,路径为“%LR_PATH%\bin\plink.exe”;
    2、Linux/Unix的磁盘监控指令,读者也可以扩展为其它任何实用指令;
    3、LoadRunner自带函数lr_user_data_point的使用,保存自定义数据到测试结果。
脚本贴出如下:
  1. #define BUFFER_SIZE 20480 // 初始给它 20 KB
  2. extern char* strtok(char *token, const char *delimiter); // 显示申明
  3. Action(){
  4.     long fp; // 数据流
  5.     int count; // 用于保存流长度
  6.     char buffer[BUFFER_SIZE]; // 给数据流分配内存空间
  7.     char * row_token; // 记录每一行的地址
  8.     char field_name[100]; // 第一列的名称
  9.     int field_value; // 保存系列的值
  10.     char lrudp_name[100]; // 保存LR自定义指标值
  11.     int rc; // 保存返回值

  12.     lr_start_transaction("DiskIO");// Linux采样方式: plink -ssh -l username -pw password hostname command
  13.     lr_save_string("higkoo", "UserName");
  14.     lr_save_string("123456", "Password");
  15.     lr_save_string("192.168.10.31", "Server");
  16.     lr_save_string("iostat -xc | awk 'NR >2 {print $1, $10}'", "Command"); // 使用iostat拿到磁盘IO的状态信息
  17.     lr_save_string(lr_eval_string("\"%LR_PATH%\\bin\\plink\" -ssh -l {UserName} -pw {Password} {Server} \"{Command}\" 2>&1 "), "Result"); // 使用plink连接远程Linux服务器并拿到执行结果
  18.     fp = popen(lr_eval_string("{Result}"), "r");
  19.     if (fp == NULL) {
  20.         lr_error_message("执行命令失败");
  21.         return -1;
  22.     }

  23.     count = fread(buffer, sizeof(char), BUFFER_SIZE, fp); // 读取结果
  24.     if (feof(fp) == 0) {
  25.         lr_error_message("返回结果太大,请给数据流分配更大内存空间,谢谢!");
  26.         return -1;
  27.     }
  28.     if (ferror(fp)) {
  29.         lr_error_message ("监控指令返回错误");
  30.         return -1;
  31.     }
  32.     if (count == 0) {
  33.         lr_error_message("监控指令返回结果为熔");
  34.         return -1;
  35.     }
  36.     buffer[count] = NULL;

  37.     row_token = (char*) strtok(buffer, "\n"); // 按换行符分割
  38.     if (row_token == NULL) {
  39.         lr_error_message ("未发现有效数据");
  40.         return -1;
  41.     }
  42.     while (row_token != NULL) { // 开始读取数据
  43.         rc = sscanf(row_token, "%s %d", field_name, &field_value); //分割名称与值
  44.         if (rc != 2) {
  45.             lr_error_message("Incorrect number of items read from the row.");
  46.             return -1;
  47.         }

  48.         sprintf(lrudp_name, "disk_busy_%s", field_name);// 自定义数据的名称
  49.         lr_user_data_point(lrudp_name, field_value);// 保存到LR自定义数据

  50.         row_token = (char*) strtok(NULL, "\n");
  51.     }

  52.     pclose(fp);

  53.     lr_end_transaction("DiskIO", LR_AUTO);
  54. }
复制代码
功能实现了,后面的故事你来讲~~  
2009-11-06 10:07:05 tk_zhang 阅读数 44
Linux执行top命令详解

1.作用

top命令用来显示执行中的程序进程,使用权限是所有用户。

2.格式

top [-] [d delay] [q] [c] [S] [s] [i] [n]

3.主要参数

d:指定更新的间隔,以秒计算。

q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。

c:显示进程完整的路径与名称。

S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。

s:安全模式。

i:不显示任何闲置(Idle)或无用(Zombie)的行程。

n:显示更新的次数,完成后将会退出top。

4.说明

top命令是Linux系统管理的一个主要命令,通过它可以获得许多信息。这里我们结合图1来说明它给出的信息。

top命令的显示 (图略)

第一行表示的项目依次为当前时间、系统运行时间、当前系统登录用户数目、1/5/10分钟系统平均负载(一般来说,这个负载值应该不太可能超过 1 才对,除非您的系统很忙碌。 如果持续高于 5 的话,那么.....仔细的看看到底是那个程序在影响整体系统吧!)。

第二行显示的是所有启动的进程、目前运行、挂起 (Sleeping)的和无用(Zombie)的进程。(比较需要注意的是最后的 zombie 那个数值,如果不是 0 ,嘿嘿!好好看看到底是那个 process 变成疆尸了吧?!)(stop模式:与sleep进程应区别,sleep会主动放弃cpu,而stop是被动放弃cpu ,例单步跟踪,stop(暂停)的进程是无法自己回到运行状态的)

第三行显示的是目前CPU的使用情况,包括us用户空间占用CPU百分比、sy 内核空间占用CPU百分比、ni 用户进程空间内改变过优先级的进程占用CPU百分比(中断处理占用)、id 空闲CPU百分比、wa 等待输入输出的CPU时间百分比、hi,si,st 三者的意思目录还不清楚 :)

第四行显示物理内存的使用情况,包括总的可以使用的内存、已用内存、空闲内存、缓冲区占用的内存。

第五行显示交换分区使用情况,包括总的交换分区、使用的、空闲的和用于高速缓存的大小。

第六行显示的项目最多,下面列出了详细解释。

PID(Process ID):进程标示号 ( 每个 process 的 ID )

USER:进程所有者的用户名 ( 该 process 所属的使用者 )

PR:进程的优先级别 ( Priority 的简写,程序的优先执行顺序,越小越早被执行 )

NI:进程的优先级别数值 ( Nice 的简写,与 Priority 有关,也是越小越早被执行 )

VIRT:进程占用的虚拟内存值。

RES:进程占用的物理内存值。

SHR:进程使用的共享内存值。

S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。

%CPU:该进程占用的CPU使用率。

%MEM:该进程占用的物理内存和总内存的百分比。

TIME+:该进程启动后占用的总的CPU时间 ( CPU 使用时间的累加 )

Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。

top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。

<空格>:立刻刷新。

P:根据CPU使用大小进行排序。

T:根据时间、累计时间排序。

q:退出top命令。

m:切换显示内存信息。

t:切换显示进程和CPU状态信息。

c:切换显示命令名称和完整命令行。

M:根据使用内存大小进行排序。

W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

可以看到,top命令是一个功能十分强大的监控系统的工具,对于系统管理员而言尤其重要。但是,它的缺点是会消耗很多系统资源。

5.应用实例

使用top命令可以监视指定用户,缺省情况是监视所有用户的进程。如果想查看指定用户的情况,在终端中按“U”键,然后输入用户名,系统就会切换为指定用户的进程运行界面,见图2所示。

a.作用

free命令用来显示内存的使用情况,使用权限是所有用户。

b.格式

free [-b|-k|-m] [-o] [-s delay] [-t] [-V]

c.主要参数

-b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。

-s delay:显示每隔多少秒数来显示一次内存使用情况。

-t:显示内存总和列。

-o:不显示缓冲区调节列。

d.应用实例

free命令是用来查看内存使用情况的主要命令。和top命令相比,它的优点是使用简单,并且只占用很少的系统资源。通过-S参数可以使用free命令不间断地监视有多少内存在使用,这样可以把它当作一个方便实时监控器。

#free -b -s5

使用这个命令后终端会连续不断地报告内存使用情况(以字节为单位),每5秒更新一次。

 
 
 
***************************************************
 
-bash-3.00$ top --help
Top version 3.6.1
Usage: top [-ISTbcinqu] [-d x] [-s x] [-o field] [-U username] [number]
 
参数-d x :刷新几次后退出 如  -d  10
   -s x :刷新时间间隔
   -o field :指定排序字段,好象只能指定cpu size res time
   -U 显示指定用户的进程
   number :显示多少程序

注:转自http://blog.chinaunix.net/u/31547/showart_1089681.html

Unix命令执行顺序

阅读数 1462

dos2unix批量执行

阅读数 27

find -type f | xargs dos2unix -o

博文 来自: dawning126
没有更多推荐了,返回首页