java修改linux系统时间

lhping8888 2012-08-17 06:07:06

String systemTime = lstData.get(0).get("systemTime");
String cmd = "date -s \"" + systemTime +"\"";
System.out.println("cmd-->"+cmd);
try {
Process p = Runtime.getRuntime().exec(cmd);
System.out.println("完成");
} catch (IOException e) {
e.printStackTrace();
}

后台可以清楚看到打印出了cmd-->date -s "2012-08-15 17:38:13"及完成的调试信息,出没有报任何的异常。但linux的系统时间就是没有改变。如果直接在linux下执行该cmd,可以看到linux的系统时间是有变化的。求大虾帮忙,我整一下午了,就是找不出原因。
ps:上面代码是放在一个java类里,前台通过Ajax动态访问这个类,会不是因为这样有影响。
...全文
1583 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
瞿孟林 2015-04-13
  • 打赏
  • 举报
回复
谢谢 正好受益了
lhping8888 2012-08-21
  • 打赏
  • 举报
回复
问题已解决。大概原因好像是因为linux下执行带参数的命令,用上面的方式会出错。
用Process对象的getErrorStream()可以看到错误如下:
the argument “10:09:08'” lacks a leading `+';

目前解决方式是用exec(String[] cmdarray)
String cmd = "/bin/date -s '2012-08-23 10:17:12'"
String[] comands = new String[] { "/bin/sh", "-c", cmd };
Process p = Runtime.getRuntime().exec(comands);

数组的前两个字符串好像是固定写法。后面是带参数的linux执行命令。
scbb 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

引用 3 楼 的回复:

你执行该代码的用户有改时间的权限吗?

怎么看权限,呵呵,不太熟悉linux的命令,还有。我直接在linux下操作那条cmd命令,是可以改变的。就是程序改不了。
[/Quote]

你是web上运行的吗? tomcat的话,估计就是用了tomcat这个用户在执行。

#su - tomcat
然后再
# date -s "2012-08-23 10:25:00"
再看看你还能改时间不?


你楼上试的时候,用了root用户,root用户拥有几乎所有权限。 所以能改,tomcat就不一定了。
lhping8888 2012-08-20
  • 打赏
  • 举报
回复
[root@db logs]# date -s "2012-08-23 10:25:00"
2012年 08月 23日 星期四 10:25:00 CST
[root@db logs]# date
2012年 08月 23日 星期四 10:25:11 CST
lhping8888 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

你执行该代码的用户有改时间的权限吗?
[/Quote]
怎么看权限,呵呵,不太熟悉linux的命令,还有。我直接在linux下操作那条cmd命令,是可以改变的。就是程序改不了。
lhping8888 2012-08-20
  • 打赏
  • 举报
回复
后台明显打印了下面的信息。
cmd-->date -s "2012-08-23 10:17:12"
完成

[root@db logs]# date
2012年 08月 20日 星期一 10:21:07 CST
[root@db logs]#

可是为什么服务器的时间就是没有改变呢。?求大神们指教
scbb 2012-08-20
  • 打赏
  • 举报
回复
你执行该代码的用户有改时间的权限吗?
lhping8888 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

这个真心不懂。
不过在页面中调用的话,调整的也是web服务器的时间,本地时间是不会改变的。
是不是这样的原因呢?
[/Quote]
我知道你所表达的。不是这种原因。
lhping8888 2012-08-20
  • 打赏
  • 举报
回复
[root@db logs]# su - tomcat
su: 用户 tomcat 不存在

是在web上运行的,我登陆及启动tomcat,都是在root下进行的,应该用的就是root用户吧?
Tommyzcg 2012-08-18
  • 打赏
  • 举报
回复
这个真心不懂。
不过在页面中调用的话,调整的也是web服务器的时间,本地时间是不会改变的。
是不是这样的原因呢?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧