Ubuntu14.04不小心移动/usr/lib到/usr/loacal/lib下的解决方案

本文提供了解决Ubuntu14.04中不慎将/usr/lib移动到/usr/local/lib后导致系统异常的方法。介绍了两种解决方案:一是利用root用户权限进行文件恢复;二是通过启动修复模式调整文件权限并恢复。
                  Ubuntu14.04不小心移动/usr/lib到/usr/loacal/lib下的解决方案

***学习Cmake时,在主目录下不小心手贱,把命令敲错成了:sudo mv /usr/lib /usr/local/lib导致了一系列不正常***

具体表现为:
1 无法通过sudo 移动回来,完全无法使用sudo报错:找不到/usr/lib/sudoers这个文件等。
2.界面操作瘫痪,重启必将导致系统崩溃。
3.无法调出新的终端(如果有正在运行的浏览器,终端什么的先别忙着关)
现在有下面几种解决途径:
1.如果你在Ubuntu下创建过root用户:
使用命令
su root
应该可以移回来,如果不能移动,可以先进入root用户,然后通过命令
/lib64/ld-linux-x86-64.so.2 –library-path /usr/local/lib/lib /bin/cp -rfp /usr/local/lib/lib /usr
复制回来。

ps:这条命令可以应对更糟糕的情况(如把/usr/lib和/usr/bin等多个文件都移到另外的文件夹下),具体详见:http://blog.51cto.com/sharkyan/771966

2.如果没有创建root用户(Ubuntu默认没有创建):
在执行su root 会提示不被许可,这时可以通过启用Ubuntu的修复模式解决。

(如果不放心,可以先备份,但是此时系统文件已经没法备份了,主目录下的文件可以备份到u盘,插上u盘,在主目录下使用命令:cp -ra . /media/“你的用户名”/“U盘名”。)

重启后,在引导界面选择修复模式Advanced option for Ubuntu > linux- XXXX - (recovery)
选择修复模式后的界面
选择root(倒数第二项)获取root权限
这时虽然已经获取了root权限,但是如果直接
mv /usr/local/lib/lib /usr
会提示错误:意思是/usr只有读取权限,不能写入,这时要暂时更改/usr权限(系统修复成功后记得改回来哈)
chmod 777 /usr
此时又提示出错:
chmod:changin个permissions of ‘/usr’:Read-only file system,
不要慌,通过以下命令解决:
mount -rw -o remount /
然后可以修改/usr权限为可读可写可执行模式了:
chmod 777 /usr
不报错就是已经修改过来了,也可以用ls -l 看下。
改过来后,再把文件移回去:
然后
reboot
重启,没问题,perfect!!!

### 运行 Ubuntu 14.04 容器并指定工作目录 为了运行一个基于 `ubuntu:14.04` 的 Docker 容器,并设置特定的工作目录(即所谓的“镜像根目录”,通常指的是容器内的默认路径),可以使用 `-w` 或者 `--workdir` 参数来设定工作目录。然而,在此场景中,如果仅是为了执行 `/bin/echo 'Hello world'` 并需要特别指明工作目录,因为该命令依赖于任何文件系统的具体位置。 对于想要显示工作目录的情况,可以在启动容器之前通过 `WORKDIR` 指令定义好所需的工作空间;而在交互模式下启动容器时,则可以直接利用上述提到的参数快速切换到期望的位置: ```bash docker run -it --rm --workdir=/root ubuntu:14.04 /bin/bash -c "/bin/echo 'Hello world'" ``` 这条指令会创建一个新的临时容器实例,进入名为 `/root` 的目录作为初始工作区,随后立即输出字符串 `'Hello world'` 后退出[^1]。 需要注意的是,默认情况下,如果没有显式地声明工作目录,那么大多数官方的基础镜像都会将 `/` 设定为起始点。因此,如果关心具体的路径而只是单纯希望展示消息的话,下面这种方式也是完全可以接受的: ```bash docker run ubuntu:14.04 /bin/echo 'Hello world' ``` 这将会直接在控制台打印出 `"hello world"` 而会改变当前的工作目录设置[^2]。 另外,若要使容器以后台守护进程的形式持续断地发送问候语句至标准输出流,可参照如下做法: ```bash docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done" ``` 这样做的效果是在后台启动了一个断循环打印 “hello world” 的服务型应用[^3]。 最后,考虑到构建自定义镜像的需求,可以通过编写 `Dockerfile` 来预先配置好所有必要的环境变量以及安装包等内容。例如,给定一段简单的 C++ 程序编译需求,对应的 `Dockerfile` 可能看起来像是这样的结构[^4]: ```Dockerfile FROM gcc:latest RUN mkdir -p /home/user/docker/HelloDocker COPY HelloDocker /home/user/docker/HelloDocker WORKDIR /home/user/docker/HelloDocker #RUN g++ HelloDocker.cpp -o HelloDocker CMD ["./HelloDocker"] ``` 这段脚本描述了一种方法论上的指导方针——先继承最新的 GCC 编译工具链版本,接着准备项目所需的存储空间,复制源码进去之后调整当前位置到最后一步所处的地方,最终给出程序入口点以便后续调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值