centos ln命令?systemctl命令

CentOS下软链接建立与删除的方法

在CentOS操作系统中,软链接的创建和删除操作相当简单。首先,要创建一个软链接,可以使用ln-s命令,例如,如果你想要在/data2/目录下为/data/ftp目录创建一个软链接,命令如下:

mv/data/ftp/data2/ln-s/data2/ftp/data/ftp

这样,当你在/data/ftp目录下访问时,实际上会指向/data2/ftp中的内容,而不会影响原始文件。

然而,删除软链接时需要特别注意,因为误操作可能会产生问题。如果直接使用rm命令删除软链接,如:

rm/data/ftp

可能会误删掉原始的ftp目录,因为这个命令会查找并删除完整路径下的文件。所以,当你打算删除一个软链接时,只需删除软链接文件本身,即去掉路径中的最后一个斜杠"/",如:

rm/data2/ftp

这样操作只会移除软链接,不会影响到原始的/data/ftp目录。总之,在进行软链接操作时,务必小心,特别是在删除时,确保正确识别软链接和原始文件的区别,避免不必要的数据丢失。

如何修改CentOS7系统默认运行级别

CentOS系统有7个运行级别(runlevel)

运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动

运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆

运行级别2:多用户状态(没有NFS)

运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式

运行级别4:系统未使用,保留

运行级别5:X11控制台,登陆后进入图形GUI模式

运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

修改运行级别

Centos7中采用target概念来定义运行级别,分为3级、5级,含义如下:

3级-multi-user.target文本 5级-graphical.target图形

1)查看当前运行的级别

# runlevel [root@chezhi chezhi]# runlevel N 3 [root@chezhi chezhi]#

如果系统当前默认运行级别是图形GUI模式则runlevel显示结果为: 5 3

2)修改开机默认运行级别

systemd使用链接来指向默认的运行级别,由/etc/systemd/system/default.target文件中决定。

切换到运行级3:

a.先删除: mv/etc/systemd/system/default.target/etc/systemd/system/default.target_copy5#将文件重命名即可

b.创建软连接文件: ln-sf/lib/systemd/system/multi-user.target/etc/systemd/system/default.target

或者

ln-sf/lib/systemd/system/runlevel3.target/etc/systemd/system/default.target

再者也可以使用systemctl命令:

systemctl set-default graphical.target

systemctl isolate multi-user.target

最后正常关机并重启系统: init 6

然后系统开机就会自动进入控制台命令模式,如果想切换回默认进入图形GUI模式执行命令:

#先删除文件 [root@chezhi system]# rm-rf/etc/systemd/system/default.target#重新创建软连接文件 [root@chezhi system]# ln-sf/lib/systemd/system/graphical.target/etc/systemd/system/default.target

【UTC】CentOS7修改时区的正确姿势

整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC,Universal Time Coordinated)。

格林威治标准时间(Greenwich Mean Time)指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。(UTC与GMT时间基本相同,本文中不做区分)

中国标准时间(China Standard Time)【GMT + 8 = UTC + 8 = CST】

夏令时(Daylight Saving Time)指在夏天太阳升起的比较早时,将时钟拨快一小时,以提早日光的使用。(中国不使用)

RTC(Real-Time Clock)或CMOS时钟,一般在主板上靠电池供电,服务器断电后也会继续运行。仅保存日期时间数值,无法保存时区和夏令时设置。

一般在服务器启动时复制RTC时间,之后独立运行,保存了时间、时区和夏令时设置。

在CentOS 6版本,时间设置有date、hwclock命令,从CentOS 7开始,使用了一个新的命令timedatectl。

Centos7修改系统时区timezone ,解决快、慢8小时问题

如果服务器用非 UTC的时间,时区转换很容易不一致,而且对于有 daylight saving的时区,每年多一小时少一小时的那两天,系统就会出现各种诡异现象。

服务器使用UTC时间,如要显示用户所在时区的本地时间,在客户端转化即可。

# timedatectl

我们可以看到,服务器使用的CST时间

# timedatectl set-timezone UTC

# timedatectl set-time"YYYY-MM-DD HH:MM:SS"

# timedatectl set-time "HH:MM:SS"

# timedatectl

我们可以看到,服务器时间类型更改为UTC了

# ll /etc/locatime

lrwxrwxrwx. 1 root root 25 1月 14 08:30 /etc/localtime->../usr/share/zoneinfo/UTC

实际上是做了一个将 

 文件 /etc/localtime 做了一个软连接到 /usr/share/zoneinfo/UTC

# ln -s /usr/share/zoneinfo/UTC  /etc/localtime

ln:无法创建符号链接"/etc/localtime":文件已存在

# ln -sf /usr/share/zoneinfo/UTC   /etc/localtime

做软连接时,需要加-f参数,强制覆盖,不然会显示软链接已存在

# timedatectl set-time"YYYY-MM-DD HH:MM:SS"

# timedatectl set-time "HH:MM:SS"   //只设置时分秒

# timedatectl

# clock -w

# date -u  //显示UTC时间

CentOS7修改时区的正确姿势

CentOS7上运行Java程序,发现程序生成的时间与当前时间匹配不上,还以为是数据停止更新了,后来发现没有正确使用修改时区的姿势,导致程序时区错误。

正确的修改CentOS7时区的姿势:

#  ln -sf/usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

其他系统的修改文件可能是/var/etc/localtime.

错误的姿势:通过cp命令覆盖/etc/localtime时间

 # cp-f /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

通过cp命令修改时区,通过date, data-R命令显示的时区都是正确的,可是对于java程序而言,是错误的。

具体原因在于Java访问系统时区的方式上,可参见文章:

Java TimeZone和 Linux TimeZone问题

该文章很好的说明了Java访问系统时区的方式:

1.如有环境变量 TZ设置,则用TZ中设置的时区

2.在/etc/sysconfig/clock文件中找“ZONE”的值

3.如何2)都没,就用/etc/localtime和/usr/share/zoneinfo下的时区文件进行匹配,如找到匹配的,就返回对应的路径和文件名。 

问题在于,如果使用cp命令来修改/etc/localtime文件,那么可能就会导致修改的不是/etc/localtime文件,而是原时区的文件内容。

/etc/localtime是通过符号链接链接/usr/share/zoneinfo下的文件,而java是通过文件名来确认时区的,data命令是通过文件内容确认时区的,这样就导致了data命令时区正确,而java的时区是错误的!

如上图所示:CentOS7是通过符号链接到/usr/share/zoneinfo/下的时区文件的,如果通过cp指令只会修改原时区文件内容,这样,通过date的系统命令,查看时间是OK的,可是java是通过读取文件名的方式确认时区信息的。所以时区还是纽约。

阅读剩余
THE END