本文记录 Ubuntu 使用过程中遇到的一些问题,不定期更新。
目录
2、Ubuntu的终端里,上下键出现 ^[[A^[[B 等字符,无法切换最近输入的命令(2018.8.8)
11、限制其他用户对于某文件夹的访问权限 或 将指定目录\文件夹只对某用户开放
16、在指定GPU训练的情况下,将程序在后台运行(以免SSH断开后程序终止)
17、Ubuntu ssh频繁断开解决办法$ ssh -o ServerAliveInterval=60 user@server
1、Ubuntu 查看 root 组中有哪些用户
在终端输入:
cat /etc/group
查看一下root下面有哪些用户
比如第一行:root:x:0:xxx
这个xxx用户属于root组
2、Ubuntu的终端里,上下键出现 ^[[A^[[B 等字符,无法切换最近输入的命令(2018.8.8)
最近在 MSRA 实习的时候,组里分配的一台服务器,结果出现了上面的问题。
原因:一般是由于使用useradd命令创建新用户时,没有指定login shell,而默认的是/bin/sh。
解决方法:可以使用
sudo chsh -s /bin/bash <username>
来切换到/bin/bash,logout 后,再 login 。
建议:使用adduser命令,它会预设很多环境,包括默认使用/bin/bash。
3、查看显卡型号
lspci |grep VGA
4、查看本机 IP
ifconfig
5、查找某个文件
1、find
find / -name keras
说明:find命令用于查找文件,后面的“/"代表根目录,-name是find命令的参数,后面接要搜索的文件名。
如果不明确文件名称,可以使用通配符
find . -name *libc*
缺点:find是在指定的目录下遍历查找,如果目录使用 / 则表示在所有目录下查找,find方式查找文件消耗资源比较大,速度也慢一点。
2、locate
locate+文件名
linux会把系统内所有的文件都记录在一个数据库文件中,使用locate+文件名的方法会在linux系统维护的这个数据库中去查找目标,相比find命令去遍历磁盘查找的方式,效率会高很多。
缺点:数据库文件不是实时更新的,一般会每周更新一次,所以使用locate命令查找到的结果不一定是准确的。
解决方法:在使用locate之前通过 updatedb 命令更新一次数据库,保证结果准确。
3、whereis
whereis+文件名
用于程序名的搜索,搜索结果只限于二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s),如果省略参数,则返回所有信息。
4、which
which+可执行文件名
which的作用是在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which指令会在环境变量$PATH设置的目录里查找符合条件的文件,所以基本的功能是寻找可执行文件。
================================ 2019、10、7====================================
6、在多用户系统中,查看当前用户
who
7、Ubuntu中创建新用户
sudo adduser <name>
8、多个用户之间进行切换
su <name>
9、Ubuntu中查看用户命令
id
比如我们想看office用户的信息,命令就是:id office
显示的结果如下,从显示的信息中我们可以看到,在groups里有sudo,也有admin这两个组的信息。说明office用户在root权限组中。
10、给普通用户增加管理员权限
(假设用户名叫test)
usermod -a -G sudo -s /bin/bash test
7到10的整体操作如下:
useradd test
然后使用命令id test查看test的信息,可以看到groups里只有一个test。
再将它添加到sudo组里面去,命令是:
usermod -a -G sudo -s /bin/bash test
添加完成后,修改它的密码,命令是:
passwd test
最后再用id test命令查看它的信息,可以看到groups里多了一个sudo组。如下所示:
11、限制其他用户对于某文件夹的访问权限 或 将指定目录\文件夹只对某用户开放
sudo chown 用户名 文件夹或目录
例如: sudo chown eai /home/test ;执行后,test文件目录的权限就只对eai开放,eai 可以任意的在里面增删改查询。
其他任何人,管理员除外,都不能访问。
chown和chmod的区别在于,chmod针对的是该文件,它是否否能被读写,不针对任何用户(管理员除外)。
chown则是针对个人。
12、修改所有子文件或子目录的所有者及权限
与11类似,Ubuntu中有两个相关命令:「change mode」&「change owner」
即chmod以及chown,对于所有子文件夹或目录的权限修改,可用递归参数-R来实现。
1、chmod
chmod -R 700 文件夹或目录
-R参数是递归处理目录下的所有文件以及子文件夹
700是变更后的权限表示(只有 所有者 有读和写以及执行的权限)
2、chown
chown -R 用户名:用户组 文件夹或目录
对目录下的所有文件与子目录执行所有者变更,修改所有者为用户组的用户(用户组参数不是必须有)
13、查看相应文件与文件夹权限
ls -l filename # 查看文件权限
ls -ld folder # 查看文件夹或目录权限
ubuntu中的权限表示,一共有10位数,其中:
- 最前面的 - 代表的是类型,如果是目录,最前面这个是d;
- 其次三个: rw- 代表的是所有者(user)的权限;
- 然后三个: rw- 代表的是组群(group)的权限;
- 最后三个: r-- 代表的是其他人(other)的权限;
上述中,r 表示文件可以被读(read),w 表示文件可以被写(write),x 表示文件可以被执行(如果它是程序的话),
- 表示相应的权限还没有被授予。
14、文件权限的修改(chmod)
chmod o+w 文件名
表示给其他人授予 写 此文件的权限
chmod go-rw 文件名
表示删除文件中 组群 和 其他人 的 读 和 写 的权限
其中:
- u 代表所有者(user)
- g 代表所有者所在的组群(group)
- o 代表其他人,但不是u和g (other)
- a 代表全部的人,也就是包括u,g和o
- r 表示文件可以被读(read)
- w 表示文件可以被写(write)
- x 表示文件可以被执行(如果它是程序的话)
-rwx,四个指令也可用数字来代替
- r ------------4
- w -----------2
- x ------------1
- - ------------0
行动:
- + 表示添加权限
- - 表示删除权限
- = 表示使之成为唯一的权限
根据上面的介绍,一些常用的指令为:
- -rw------- (600) 只有所有者才有读和写的权限;
- -rw-r–r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限;
- -rwx------ (700) 只有所有者才有读,写,执行的权限;
- -rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限;
- -rwx–x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限;
- -rw-rw-rw- (666) 每个人都有读写的权限;
- -rwxrwxrwx (777) 每个人都有读写和执行的权限;
- sudo chmod 600 ××× (只有所有者有读和写的权限);
- sudo chmod 644 ××× (所有者有读和写的权限,组用户只有读的权限);
- sudo chmod 700 ××× (只有所有者有读和写以及执行的权限);
- sudo chmod 666 ××× (每个人都有读和写的权限);
- sudo chmod 777 ××× (每个人都有读和写以及执行的权限);
- sudo chmod -R 777 文件或文件夹的名字(给某个目录或文件所有权限)
15、执行.sh文件
bash 文件名
例如: bash eai.sh
或将其修改为可执行文件:
chmod +x sh文件名
./sh文件名
举例:
1、 chmod +x eai.sh
2、 ./eai.sh
16、在指定GPU训练的情况下,将程序在后台运行(以免SSH断开后程序终止)
将程序在后台运行,且将运行结果输出至指定log文件 的指令是:
nohup command > filename.log 2>&1 &
例如,执行 file.py 文件,且将运行过程保存至 result.log 中:
nohup python file.py > result.log 2>&1 &
若指定GPU训练时,以0号GPU为例,指令为:
CUDA_VISIBLE_DEVICES=0 nohup python file.py > result.log 2>&1 &
17、Ubuntu ssh频繁断开解决办法
$ ssh -o ServerAliveInterval=60 user@server