Unix时间戳和Java 的 System.currentTimeMillis的区别
用法:可以用法获取当前时间的毫秒数,可以通过毫秒数进行时间比较,时间转化以及时间格式化等。
public class SystemTime {public static void main(String[] args) { //定义当时运行的时间变量Long time = System.currentTimeMillis();//打印开始时间的毫秒数System.out.println(time);for(int i =0;i//什么都不用做} System.out.println("for循环运行的所需要时间(毫秒数)"+(System.currentTimeMillis()-time)); System.out.println("for循环运行的所需要时间(秒)"+(System.currentTimeMillis()-time)/1000);System.out.println("显示当前时间:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(System.currentTimeMillis()));}}含义:主要是返回以毫秒为单位的当前时间,值的粒度取决于不同的操作系统
请问unix下的vmunix是什么,有什么作用?
UNIX系统内核实际上是个程式,其名称一般是/unix或/vmunix,名称随生产厂家的不同可能会有些差异,以hp的为例:1. /stand/vmunix (启动时候加载的kernel)2. /stand/hpux_test/vmunix (系统最后一次测试过的kernel)3. /stand/backup/vmunix (系统自动备份的kernel)4. /stand/current/vmunix (当前运行的kernel)5. /stand/last_install/vmunix (最新一次升级的kernel)
写一个unix shell脚本无限循环 3秒一次显示登陆登出到unix系统的用户
a=`date`b=`who|awk '{printf $1 "\n"}`echo "$b\n" >b.txtwhile [ 1 -lt 2 ]doecho "The current time is :$a"echo "The current users are :$b"sleep 30c=`who|awk '{printf $1 "\n"}`echo "$c\n" >c.txtecho `awk '{print $0}' b.txt c.txt|sort|uniq -u` >tmpfiled=`cat tmpfile|grep -v ^$|wc -l`if [ $d -eq 0 ]thenecho "no user login and logout"elsei=1while [ i -le $d ]doe=`cat tmpfile|awk '{printf $0 " "}'|awk '{printf $k}' k="$i"`if [ `cat b.txt|grep $e|wc -l` -eq 0 ]thenecho "user login:$e"elseecho "user logout:$e"filet i=i+1donefiecho "$c\n" >b.txtdone
linux,unix常用基本命令
登录时(当看到login:时)你必须是在系统安装时创建的用户或root超级用户.(在FreeBSD系统安装时就已经创建了root用户了 ,root用户遍历到系统的任何一个目录并且可以做任何事情,包括删除系统文件,所以一定要千万小心!)符号%和符号# 代表提示符(你的可能不一样),%表示普通用户,#表示超级用户root要退出系统(并且回到login:提示符),打命令:# exit对,打完命令后按回车,记住UNIX对命令是区分大小写的--也就是说,是exit,而不是EXIT.要关闭机器,打命令:# /sbin/shutdown -h now要重启机器,打命令:# /sbin/shutdown -r now或者# /sbin/reboot你也可以按Ctrl-Alt-Delete来重启机器.花少许时间练习一下.在最近发行的FreeBSD版本中这和/sbin/reboot是相等的,而且这比按reset按钮要好多了.你也不想重装东西,难道不是吗?2.用Root权限添加用户当你第一次运行adduser时,它也许会创建一些缺省设置.在它建议你把sh作为缺省shell的时候,你可能想把csh作为缺省shell 而不是sh.否则直接按回车接受默认值.这些默认设置保存在/etc/adduser.conf中,一个可编辑文件.# adduser假如你创建了一个新用户jack全名为Jack Benimble.出于安全因素,给jack一个口令(即使周围的孩子也可能敲击键盘).当它问你是否想jack成为某个组的成员时,回答w heelLogin group is ``jack''. Invite jack into other groups: wheel这样就可以用户jack登录系统,再用su命令成为root超级用户.然后你就再也不会因为以root超级用户登录而受到责备了.你可以在adduser中,通过按Ctrl-C退出随时退出.在创建结束时你可以批准该用户的生成或打n来取消创建该用户.你也许想创建第二个用户(jill?)这样当你编辑jack的登录文件时,就有一个热备份以免出错.一旦创建完用户,exit用exit回到login:提示符以jack登录.通常情况下,最好不要用root用户而是用普通用户完成大部分的工作.如果你已经创建了一个用户而且想使该用户能够用su命令成为root用户,你可以root登录然后编辑文件/etc/group,把jack加入第一行(wheel组),但是你首先要练习使用vi,文本编辑器--或简单些的编辑器,安装在最近发行的FreeBSD中的ee.要删除一个用户使用rmuser命令.修改密码 passwd命令,这个命令和linux上修改用户密码的命令是一样。
输入passwd命令以后,会提示输入oldpassword,再输入新密码,确认新密码!丢人3. 环顾四周以普通用户登录,四处浏览一下再使用一些命令试着访问帮助资源和FreeBSD的别的信息.以下是一些命令和它们的功能:id 告诉你你是谁!pwd 显示你在哪个目录--当前工作目录.ls 显示当前目录的文件.ls -F 显示当前目录的文件.执行文件的文件名后加*,目录名后加/,符号链接后加@.ls -l 以长格式显示文件.ls -a 列出隐藏点文件和其它文件.如果你是root用户,无须加-a选项,点文件将自动显示.cd 改变目录.cd .. 回到上级目录;注意cd后的空格.cd /usr/local 到/usr/local目录下.cd ~ 到以登录用户的主目录--例如/usr/home/jack.试试cd /cdrom,然后ls, 看看你的CDROM是否mounted并且正常工作.view filename让你看一个文件(文件名为filename 不改变文件名).试试view /etc/fstab.:q :q退出.cat filename在屏幕上显示filename.如果文件太长你只能看到文件的最末部分,按ScrollLock 然后用上下键往回移;ScrollLock键在看手册的时候也用的上.再按一下ScrollLock将退出屏幕滚动.你可以试一下cat你主目录的点文件cat .cshrc , cat .login , cat .profile.你也许注意到了.cshrc文件中有关ls命令的别名(它们用起来很方便).你可以编辑.cshrc文件来创建一些别的别名.为了使系统的所有用户都能使用这些别名,把它们放到csh的系统配置文件/etc/csh.cshrc中.4. 获得帮助信息这里有一些关于帮助的有用的资源.text表示你从键盘打入的东西--通常是一条命令或文件名.apropos text 在whatis数据库中所有包含text的有关信息.man texttext的手册.是Un*x系统文档的主要来源.man ls会告诉你使用ls命令的所有方法.按回车键在文本中移动,Ctrl-b往前翻一页,Ctrl-f往后翻一页,q或Ctrl-c退出.which text 告诉你text命令所在的路径.locate text 所有找到text字符串的路径.whatis text告诉你text命令主要用来干什么和它的手册页.打入whatis *将告诉你当前目录中的所有命令的有关信息.whereis text 寻找text文件,并给出它的完全路径.你可能想对一些常用命令如cat, more,grep,mv,find,tar,chmod,chown,date,和script使用whatis命令.more命令可以让你以DOS的方式一次只阅读一页内容. 例如: ls -l | more 或 more filename.符号*代表通配符--例如:ls w*将显示所有以w开头的文件名.这些命令是不是并不太有效?locate和whatis命令都取决于每星期重建一次的数据库.如果你不准备让你的机器在周末也运行的话(运行FreeBSD),你也许希望不时地每天、每星期、每月运行这些命令?现在,以root身份运行这些命令然后在运行下条命令之前指定一个结束时间.# /etc/daily 输出省略# /etc/weekly 输出省略# /etc/monthly 输出省略如果你等的不耐烦了,按Alt-F2到另一个虚拟控制台上并登录进去.实际上FreeBSD是一个多用户、多任务系统.不过这些命令在运...
Unix如何添加新的用户?
在Linux中添加普通新用户 超级用户(也称为“root”)是一个具有修改系统中任何文件权力的特别账号。
在日常工作中,最好不要使用超级用户账号进入系统,因为任何错误操作都可能导致巨大的损失。
由于超级用户账号是系统建立后提供的惟一一个账号,因此,您需要建立和使用一个一般用户账号进行日常工作。
超级用户可以创建新的用户账号,下面的命令将建立一个名为joe的新用户:# adduser joe# passwd joe (键入joe的口令)Linux采用了将系统管理员和一般用户分开的策略,这种策略保证了系统的健壮性,同时也使Linux下的病毒难以编写(用户编写的程序仅对自己的目录有写权限,而与操作系统的其他部分是隔离开的)。
一般情况下,用户在第一次注册时需要立即修改自己的口令。
命令如下:(current)Unix Password [键入旧的口令]New Unix Password [键入新的口令]Retype New Unix Password [再一次键入新的口令]出于安全考虑,您键入的口令是不会显示在屏幕上的。
脆弱的口令是系统不安全的最主要原因。
比如用单词“password”作为口令;把自己或他人的姓名或注册名作为口令;把公司名、部门名或组名作为口令;把生日作为口令;把口令写在日历上或计算机旁边;使用某个字典里的单词或常用词语等。
一个好的口令字应该是至少6个字母长,其中包含了字母和数字,并且应该经常修改。
系统管理员可以通过配置程序来设定口令的安全策略。
例如,您可以以root身份启动linuxconf实用程序来进行账号配置与变更。
如果您忘记了超级用户的口令,就只能用Linux的启动盘启动系统,然后找到硬盘上的Linux分区,再编辑/etc/passwd文件,在此文件中,删除root用户被加密后的口令。
假设/etc/passwd中关于root的登记项如下:root:x:0:0:root:/root:/bin/bash 其中“x”为口令加密后的结果,您应该将它改为如下形式:root::0:0:root:/root:/bin/bash现在,root是没有口令的,因此您可以重新启动机器,在注册提示符下,用root注册,并在提示输入口令时按键就可以了。
另外一种解决方法是重新安装系统。
如果一般用户(非root)忘记了自己的口令,那就很容易解决,root能修改任何用户的口令。
...
UNIX进程和UNIXShell问题
这是我写的代码你拿去参考一下,在UNIX中主要是调用POSIX API,跟Linux中一样:#include #include #include int main(int argc,char* argv[]){int i;struct utsname name;printf("Logged User:\t\t%s\n",getlogin());printf("User ID:\t\t%lu\n",getuid());for(i=0;iputchar(0xa);printf("System Information Here:\n");printf("Memory page size:\t%lu\n",getpagesize());if(uname(&name)!=-1){printf("Name of the implementation of the operating system:%s\n",name.sysname);printf("Name of this node on the network:%s\n",name.nodename);printf("Current release level of this implementation:%s\n",name.release);printf("Current version level of this release:%s\n",name.version);printf("Name of the hardware type the system is running on:%s\n",name.machine);printf("Name of the domain of this node on the network:%s\n",name.__domainname);}return 0;}获取信息其实可以很多,我的这个只是一个小部分。
如果你要获取一些硬件信息,可以打开/proc目录下的一些映射文件,如:要得知CPU的信息,则只要打开/proc/cpuinfo文件,查看该文件即可。
用system,个人感觉很“鸡肋”。
这是我的运行效果截图:我在Linux中调试就是gdb,在编译时加一个参数“-g”。
即为:gcc -o code code.c -g code.c是我的代码文件。
UNIX中有个cc编译器,应该跟gcc差不多。
java语言中使用 那System.current.TimeMillis过得当前毫秒数,是从199...
从1970年到现在的毫秒数Integer 在JAVA内用32位表示,因此32位能表示的最大值是2147483647。
另外1年365天的总秒数是 31536000,2147483647/31536000 = 68.1,也就是说32位能表示的最长时间是68年,从1970年开始的话,加上68.1,实际最终到2038年01月19日03时14分07秒,便会到 达最大时间,过了这个时间点,所有32位操作系统时间便会变为10000000 00000000 00000000 00000000,算下来也就是1901年12月13日20时45分52秒,这样便会出现时间回归的现象,很多软件便会运行异常了。
到 这里,我想问题的答案已经显现出来了,那就是:因为用32位来表示时间的最大间隔是68年,而最早出现的UNIX操作系统考虑到计算机产生的年代和应用的 时限综合取了1970年1月1日作为UNIX TIME的纪元时间(开始时间),至于时间回归的现象相信随着64为操作系统的产生逐渐得到解决,因为用64位操作系统可以表示到 292,277,026,596年12月4日15时30分08秒,相信我们的N代子孙,哪怕地球毁灭那天都不用愁不够用了,因为这个时间已经是千亿年以后 了。
...
time.h的time函数介绍
函数原型: struct tm *localtime(const time_t *timer) 函数功能: 返回一个以tm结构表达的机器时间信息 函数返回: 以tm结构表达的时间,结构tm定义如下:#ifndef _TM_DEFINED struct tm { int tm_sec; /* 秒 – 取值区间为[0,59] */ int tm_min; /* 分 - 取值区间为[0,59] */ int tm_hour; /* 时 - 取值区间为[0,23] */ int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */ int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */ int tm_year; /* 年份,其值等于实际年份减去1900 */ int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */ int tm_yday; /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */ int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。
不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。
*/ }; #define _TM_DEFINED #endif 参数说明: timer-使用time()函数获得的机器时间 所属文件: #include#include#includeint main(){ time_t timer; struct tm *tblock; timer = time(NULL); tblock = localtime(&timer); printf(Local time is: %s, asctime(tblock)); return 0;} 函数原型: char* asctime(struct tm * ptr) 函数功能: 得到机器时间(日期时间转换为ASCII码) 函数返回: 返回的时间字符串格式为:星期,月,日,小时:分:秒,年 参数说明: 结构指针ptr应通过函数localtime()和gmtime()得到 函数原型: char *ctime(const time_t *time) 函数功能: 得到日历时间 函数返回: 返回字符串格式:星期,月,日,小时:分:秒,年 参数说明: time-该参数应由函数time获得 所属文件: #include#includeint main(){ time_t t; time(&t); printf(Today's date and time: %s, ctime(&t)); return 0;} 函数原型: double difftime(time_t time2, time_t time1) 函数功能: 得到两次机器时间差,单位为秒 函数返回: 时间差,单位为秒 参数说明: time1-机器时间一,time2-机器时间二.该参数应使用time函数获得 所属文件: #include#include#includeint main(){ time_t start, end; system(cls);//清屏 time(&start); Sleep(5000);//等待5秒,Sleep()函数包含在windows.h的头文件里,以毫秒为单位 time(&end); printf(The difference is: %f seconds, difftime(end, start)); return 0;} 函数原型: struct tm *gmtime(time_t *time) 函数功能: 得到以结构tm表示的时间信息 函数返回: 以结构tm表示的时间信息指针 参数说明: time-用函数time()得到的时间信息 所属文件: #include#include#include#includechar*tzstr=TZ=PST8PDT;int main(){ time_t t; struct tm *gmt,*area; putenv(tzstr); tzset(); t = time(NULL); area = localtime(&t); printf(Local time is: %s, asctime(area)); gmt = gmtime(&t); printf(GMT is: %s, asctime(gmt)); return 0;} 函数原型: time_t time(time_t *timer) 函数功能: 得到系统当前的日历时间 函数返回: 系统当前日历时间,如果不能获得当前日历时间,则返回-1 参数说明: timer=NULL时得到机器日历时间,timer为有效指针时,更新timer为系统当前时间,time_t是一个long类型 所属文件: #include#include#includeint main(){ time_t t; t = time(NULL);//默认1970-1-1 printf(The number of seconds since January1, 1970 is %ld, t); return 0;} 函数原型: void tzset(void) 函数功能: UNIX兼容函数,用于得到时区,在DOS环境下无用途 函数返回:参数说明:所属文件: #include#include#includeint main(){ time_t td; putenv(TZ=PST8PDT); tzset(); time(&td); printf(Current time = %s, asctime(localtime(&td))); return 0;}
VC 怎么获取Unix时间戳
获取前系统UNIX间戳System.out.println("获取系统毫秒数1:"+Long.toString(new Date().getTime()));System.out.println("获取系统毫秒数2:"+Long.toString(System.currentTimeMillis()));注意:代码获取都系统毫秒数实际操作我般都记录毫秒说求记录精度处理UNIX间戳候需要数据进行处理
转载请注明出处51数据库 » (current) unix passw