如何重置CentOS 7的Root密码?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何重置CentOS 7的Root密码?相关的知识,希望对你有一定的参考价值。
以下是centos7重置root密码的方法:1、开启虚拟机;
2、在弹出这个界面时,按上下键防止页面跳转,选择"CentOSLinux(3.10.0-1160.e17.x8664)7(Core)"并按e;
3、找到rocrashkernel=autoxxx,把ro换成rwinit=/sysroot/bin/sh;
4、使用组合键Ctrl+X进入单用户模式;
5、chroot/sysroot访问系统;
6、passwdroot重新输入新的root用户密码;
7、touch/.autorelabel创建标签文件;
8、exit返回刚刚的单用户模式;
9、reboot重启系统;
10、再次重启,输入刚才重新更改的用户密码就能登录系统了! 参考技术A CentOS 7&RHEL 7进入单用户方式和重置密码方式发生了较大变化,GRUB由b引导变成了ctrl+x引导。
重置密码主要有rd.break和init两种方法。
rd.break方法:
1、启动的时候,在启动界面,相应启动项,内核名称上按“e”;
2、进入后,找到linux16开头的地方,按“end”键到最后,输入rd.break,按ctrl+x进入;
3、进去后输入命令mount,发现根为/sysroot/,并且不能写,只有ro=readonly权限;
4、mount -o remount,rw /sysroot/,重新挂载,之后mount,发现有了r,w权限;
5、chroot /sysroot/ 改变根;
(1)echo RedHat|passwd –stdin root 修改root密码为redhat,或者输入passwd,交互修改;
(2)还有就是先cp一份,然后修改/etc/shadow文件
6、touch /.autorelabel 这句是为了selinux生效
7、ctrl+d 退出
8、然后reboot
至此,密码修改完成
init方法:
1. 启动系统,并在GRUB2启动屏显时,按下e键进入编辑模式。
2. 在linux16/linux/linuxefi所在参数行尾添加以下内容:init=/bin/sh
3. 按Ctrl+x启动到shell。
4. 挂载文件系统为可写模式:mount –o remount,rw /
5. 运行passwd,并按提示修改root密码。
6. 如何之前系统启用了selinux,必须运行以下命令,否则将无法正常启动系统:touch /.autorelabel
7. 运行命令exec /sbin/init来正常启动,或者用命令exec /sbin/reboot重启 参考技术B 步骤一:开机启动时,在相应内核上按e进入编辑模式
步骤二:找到linux16开头那一行,移动光标到最后,输入rd.break,然后按ctrl+x
步骤三:重新挂载/sysroot可读写,mount -o remount,rw /sysroot
步骤四:切换chroot /sysroot
步骤五:更改root密码,echo "密码" | passwd --stdin root
步骤六:重启时selinux对系统relabel,touch / .autorelabel,没开selinux就不需要这一步
步骤七:退出exit
步骤八:重启reboot
如何在一定时间后重置计时器?
【中文标题】如何在一定时间后重置计时器?【英文标题】:How can I reset the timer after a certain duration? 【发布时间】:2017-03-24 19:37:35 【问题描述】:我在下面的代码中设置了一个计时器。如何在每次达到给定持续时间(例如 7 秒)时重置计时器?
class SpriteGroup
var sprites : [Sprite]
var isVisible : Bool
var startTime: TimeInterval = 0.0
var currentTime: TimeInterval = 0.0
init(sprites : [Sprite], isVisible: Bool, pos: CGPoint)
self.sprites = sprites
...
startTime = Date.timeIntervalSinceReferenceDate
Timer.scheduledTimer(timeInterval: 1,
target: self,
selector: #selector(self.advanceTimer(timer:)),
userInfo: nil,
repeats: true)
func advanceTimer(timer: Timer)
currentTime = Date.timeIntervalSinceReferenceDate - startTime
【问题讨论】:
你为什么使用定时器?你真的需要使用定时器吗?与在更新函数中使用 SpriteKit 的内置处理时间方法 @RonMyschuk 我的代码中有很多复杂的操作。这就是SpriteGroup
具有currentTime
属性的原因。我需要能够监控每组精灵并偶尔打断他们的动作。基于此,我相信 Timer 对我来说会更好。
很公平......但您没有列出内置更新计时器无法处理的任何原因。我的理念是,当您已经在场景中运行工具时,为什么还要引入另一组对象?您可能还想查看此链接***.com/questions/23978209/spritekit-creating-a-timer
@RonMyschuk 链接中的所有方法都在使用操作。即使偶尔我停止在精灵上运行所有动作,我仍然需要计时器来保持。
我认为您误解了该链接的意义。该链接所说的只是不要使用计时器,它使用动作的事实是无关紧要的。更新总是在运行,它永远不会停止(除非你暂停场景)事实上它每秒触发大约 60 次。您说链接无效,因为示例正在使用操作,但随后您谈到“停止运行所有操作”......我很困惑
【参考方案1】:
我可能会这样做
我添加了 Clouds 的一个子类,向您展示他们的 Timer 如何受到场景更新的影响,它只是以均匀的速度在场景中滚动云,而不管设备性能如何
private var lastUpdateTime: TimeInterval = 0.0
override func update(_ currentTime: TimeInterval)
//check if game is actually playing, don't want to update time if game is paused
if lastUpdateTime == 0 || gameState != .playing
lastUpdateTime = currentTime
return
let delta = currentTime - lastUpdateTime
if delta > 7
//this has now been 7 seconds so do something here
//reset timer
lastUpdateTime = currentTime
enumerateChildNodes(withName: "cloud*", using: cloud, stop in
if let cloud = cloud as? Cloud
cloud.update(delta: delta)
)
class Cloud: SKSpriteNode
private var minY: CGFloat = 0
private var maxY: CGFloat = 0
private var cloudWidth: CGFloat = 0
private override init(texture: SKTexture?, color: UIColor, size: CGSize)
super.init(texture: texture, color: color, size: size)
convenience init()
let texture = SKTexture(image: #imageLiteral(resourceName: "cloud1"))
self.init(texture: texture, color: SKColor.white, size: texture.size())
required init?(coder aDecoder: NSCoder)
super.init(coder: aDecoder)
func setup(type: CloudType)
texture = type.texture
size = (texture?.size())!
setScale(2.0)
var midHeight = gameModel.gameHeight / 2
if let anchorY = (self.parent as? SKScene)?.anchorPoint.y
midHeight = gameModel.gameHeight * anchorY
self.minY = gameModel.gameHeight * 0.3 - midHeight
self.maxY = gameModel.gameHeight * 0.9 - midHeight
cloudWidth = self.size.width
let randomY = RandomFloatBetween(min: minY, max: maxY)
self.position = CGPoint(x: gameModel.gameWidth / 2 + cloudWidth, y: randomY)
func update(delta: TimeInterval)
let speedX = CGFloat(delta) * 90
self.position.x -= speedX
if self.position.x <= 0 - (gameModel.gameWidth / 2 + cloudWidth)
resetCloud()
private func resetCloud()
self.position.x = gameModel.gameWidth / 2 + cloudWidth
self.position.y = RandomFloatBetween(min: minY, max: maxY)
enabled = false
run(.wait(forDuration: 5, withRange: 3), completion: self.enabled = true )
【讨论】:
如果我理解你的话,Cloud
的类型是SKSpriteNode
,所以你可以在游戏场景中使用enumerateChildNodes(..)
,但SpriteGroup
(如上所示)不是SKSpriteNode
类型我将如何在游戏场景中更新它?
只要让它成为 SKSpriteNode 的子类,不会有什么坏处
真的,在使它成为 SKSpriteNode 的子类后,我遇到了一系列错误。我设法解决了其中一些问题,但目前我不确定能否解决这个问题。我添加了` super.init(texture: SKTexture!, color: UIColor, size: CGSize) super.init(texture: texture, color: color, size: size) `到我的init(在问题中)然后我得到了错误Cannot invoke 'SKSpriteNode.init' with an argument list of type ‘(texture: SKTexture!.Type.color:UIColor.Type, size:CGSize.Type, ()->())’
子类化 SKSpriteNode 也是最好的方法吗?我预见到未来会出现问题,总是不得不提醒自己,虽然它是SKSpriteNode
,但我并没有按照SKSpriteNode
的说法使用它。
将此行添加到您的 init 'Super.init(texture: nil, color: .clear, size: CGSize.zero)'以上是关于如何重置CentOS 7的Root密码?的主要内容,如果未能解决你的问题,请参考以下文章