目录
1、以centos中的指令为例阐述基本操作
目录结构
/
,根目录,下面有很多一级目录
/bin
,存放最经常使用的命令
/sbin
,存放系统管理员使用的系统管理命令
/home
,存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般
该目录名是以用户的账号命名的。
/root
,该目录为系统管理员,也称作超级权限者的用户主目录。
/boot
,存放的是启动nou时使用的一 些核心文件,包括一些连接文件以及镜像文件
/media
,linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux
会把识别的设备挂载到这个目录下。
/mnt
,系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。d:/myshare
/opt
,这是给主机额外安装软件所摆放的目录。
/usr/local
,这是另一个给主机额外安装软件所安装的目录。-般是通过编译源码方式安装的程序。
/var
,这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下包括各种日志文件。
开机关机,登录登出
syn
:把内存的数据同步到磁盘
reboot
:重启
shutdown
:关机
logout
:登出
用户管理
useradd 用户名
:添加用户
useradd -g 用户组 用户名
:增加用户时直接加上组
1)当创建用户成功后,会自动的创建和用户同名的家目录(在home目录下)
2)也可以通过 useradd -d 指定目录 新的用户名,给新创建的用户指定家目录(目录不需要自己创建)
passwd 用户名
:给用户指定或者修改密码
userdel 用户名
:删除用户 ,但是要保留家目录
userdel -r 用户名
:删除用户 以及用户主目录
id 用户名
:查询用户信息
su – 切换用户名
:切换用户
1)从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。
2)当需要返回到原来用户时,使用 exit 指令
3) whoami 命令可以查看当前用户
groupadd 组名
:添加用户组
groupdel 组名
:删除用户组
usermod -g 用户组 用户名
:修改用户的组
/etc/passwd文件
:用户(user)的配置文件,记录用户的各种信息,每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell
/etc/shadow 文件
:口令的配置文件
/etc/group文件
:组(group)的配置文件,记录 Linux 包含的组的信息,每行含义:组名:口令:组标识号:组内用户列表
添加用户并赋予 root管理员权限
创建用户
adduser stu
修改用户密码 太过简单的密码两次输入强行设置
passwd stu
修改sudoers文件为可编辑
chmod -v u+w /etc/sudoers
找到这一行
root ALL=(ALL) ALL
添加这一行
stu ALL=(ALL) ALL
如果sudo的时候不想要输入密码 那就改成
stu ALL=(ALL) NOPASSWD:ALL
修改sudoers文件为不可编辑
chmod -v u-w /etc/sudoers
然后试试登录新用户 以及新用户能否使用sudo
比如 cat /etc/sudoers 命令会被拒绝
然后sudo cat /etc/sudoers 命令被允许 则配置成功
常用命令
运行级别
:
0:关机
1:单用户[找回丢失密码]
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
init [012356]
:切换运行级别
帮助命令
man,help,百度
文件目录类
pwd
:显示当前工作目录的绝对路径
ls
:列出该目录下的所有子目录与文件
ll
:是ls -l的缩写
cd
:切换到指定目录,cd ~
回到家目录,cd ..
回到当前目录的上一级目录
mkdir
:创建目录,-p
:创建多级目录
rmdir
:删除空目录
rm
:删除文件或目录,-r
:递归删除整个文件夹,-f
: 强制删除不提示
touch
:创建空文件
cp source dest
:拷贝文件到指定目录,-r
:递归复制整个文件夹
cp -r /home/packageA/* /home/cp/packageB/
:将一个文件夹下的所有内容复制到另一个文件夹下
mv
: 移动文件与目录或重命名
mv oldNameFile newNameFile (功能描述:重命名)
mv /temp/movefile /targetFolder (移动单个文件到某个目录下)
mv 文件1 文件2 目录(移动多个文件到某个目录下)
cat
: 查看文件内容,是以只读的方式打开,-n
:显示行号
cat 文件名 | more [分页浏览]
more
:全屏查看文件内容,还有些快捷键。
less
:分屏查看文件内容,适用于查看大文件,还有些快捷键+1。
> 指 令 和 >> 指 令
:>
输出重定向 : 会将原来的文件的内容覆盖,>>
追加: 不会覆盖原来文件的内容,而是追加到文件的尾部。
echo
:输出内容到控制台。
head
:用于显示文件的开头部分内容,默认情况下 head 指令显示文件的前 10 行内容,head -n 5 文件
(功能描述:查看文件头 5 行内容,5 可以是任意行数)
tail
: 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的后 10 行内容
tail -n 5(功能描述:查看文件后 5 行内容,5 可以是任意行数)
tail -f(功能描述:实时追踪该文档的所有更新,工作经常使用)
ln -s [原文件或目录] [软链接名]
:给原文件创建一个软链接
history
:查看已经执行过历史命令
时间日期类
date
:显示当前日期
- date :
(功能描述:显示当前时间)- date +%Y
(功能描述:显示当前年份)- date +%m
(功能描述:显示当前月份)- date +%d
(功能描述:显示当前是哪一天)- date “+%Y-%m-%d %H:%M:%S” (功能描述:显示年月日时分秒)
date
:设置日期,date -s 字符串时间
搜索查找类
find
:指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端,语法:find [搜索范围] [选项]
-name 按照指定的文件名查找模式查找文件,如find / *.txt
-user 查找属于指定用户名所有文件
-size 按照指定的文件大小查找文件。
which
:会在环境变量$PATH设置的目录里查找符合条件的文件。
如 which gdb
locaate
: 可以快速定位文件路径。locate 指令利用事先建立的系统中所有文件名称及路径的locate 数据库实现快速定位给定的文件。Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新 locate 时刻。
由于 locate 指令基于数据库进行查询,所以第一次运行前,必须使用 updatedb 指令创建 locate 数据库。
|
:表示将前一个命令的处理结果输出传递给后面的命令处理。-n
显示匹配行与行数,-i
忽略字母大小写。
压缩和解压类
gzip/gunzip
:gzip 用于压缩文件,只能将文件压缩为*.gz 文件, gunzip 用于解压的,只能解压.gz文件
gzip 对文件进行压缩后,不会保留原来的文件。
zip/unzip
:zip 用于压缩文件,只能将文件压缩为*.zip 文件, unzip 用于解压的,只能解压.zip文件。zip常用选项-r:递归压缩,即压缩目录,unzip常用选项-d<目录> :指定解压后文件的存放目录。
tar
:用于打包,最后打包后的文件是 .tar.gz 的文件。常用:tar -zcvf a.tar.gz /home/a1.txt /home/a2.txt
:压缩多个文件,将/home/a1.txt和/home/a2.txt压缩成a.tar.gz。用于解压,不带-C
参数就是当前目录,否则解压到的那个目录事先要存在才可以;否则会报错。tar -zxvf a.tar.gz -C /opt/
组管理和权限管理
在 linux 中的每个用户必须属于一个组,不能独立于组外。在 linux 中每个文件有所有者、所在组、其它组的概念。
ls -ahl
:查看文件的所有者、所在组等信息
chown 用户名 文件名
:修改文件的所有者
groupadd 组名
:创建组
chgrp 组名 文件名
:修改文件所在组
usermod –g 组名 用户名
:修改用户所在组
权限
:
ls -l 中显示的内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
0-9 位说明
1)第 0 位确定文件类型(d, - , l , c , b)
2)第 1-3 位确定所有者(该文件的所有者)拥有该文件的权限。—User
3)第 4-6 位确定所属组(同用户组的)拥有该文件的权限,—Group
4)第 7-9 位确定其他用户拥有该文件的权限 —Other
实例
第一个字符代表文件类型: 文件 (-),目录(d),链接(l)
其余字符每 3 个一组(rwx) 读( r ) 写(w) 执行(x) 第一组 rwx : 文件拥有者的权限是读、写和执行
第二组 rw- : 与文件拥有者同一组的用户的权限是读、写但不能执行第三组 r-- : 不与文件拥有者同组的其他用户的权限是读不能写和执行
chmod
:可以修改文件或者目录的权限
通过数字变更权限,r=4 w=2 x=1 ,rwx=4+2+1=7 ,如
chmod u=rwx,g=rx,o=x 文件目录名
相当于chmod 751 文件目录名
;
修改文件所有者,chown newowner file 改变文件的所有者
chown newowner:newgroup file 改变用户的所有者和所有组
-R
如果是目录 则使其下所有子文件或目录递归生效,如chmod -R 777 文件目录名
chgrp
:修改文件所在组,chgrp newgroup file 改变文件的所有组
任务调度
crontab [选项]
,需要了再看吧
进程管理
ps -aux
:显示系统执行的进程,ps –aux|grep xxx
看看有没有xxx进程
kill -9
:杀死进程
pstree [选项]
,可以更加直观的来看进程信息
service 服务名 [start | stop | restart | reload | status]
:服务管理命令
chkconfig
:可以给每个服务的各个运行级别设置自启动/关闭
查看服务 chkconfig --list|grep xxx
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off
netstat -anp
:查看系统网络情况
RPM 和 YUM
rpm –qa|grep xx
:查询已安装的 rpm 列表
rpm -qf 文件全路径名
: 查询文件所属的软件包
rpm -e RPM 包的名称
:卸载rpm包
rpm -ivh RPM 包全路径名称
:安装 rpm 包
yum
是一个基于RPM的包管理器
yum list|grep xx
:查询 yum 服务器是否有需要安装的软件
yum install
:安装yum包
搭建javaee环境
0)先将软件通过 xftp5 上传到 /opt 下
1)解压缩到 /opt
2)配置环境变量的配置文件 vim /etc/profile
JAVA_HOME=/opt/jdk1.7.0_79
PATH=/opt/jdk1.7.0_79/bin:$PATH
export JAVA_HOME PATH
注:需要注销用户,环境变量才能生效,之后在任何目录下就可以使用 java 和 javac
系统相关
cat /proc/cpuinfo | grep 'model name' |uniq
:cpu版本号
nvidia-smi
:查看GPU使用情况
nvidia-smi -L
:gpu型号
nvcc --version
:查看CUDA版本
cat /proc/cpuinfo| grep "physical id" | sort| uniq| wc -l
:cpu个数
grep 'core id' /proc/cpuinfo | sort -u | wc -l
:cpu核数
grep 'processor' /proc/cpuinfo | sort -u | wc -l
:线程数
cat /proc/meminfo | grep MemTotal
:内存大小
fdisk -l | grep Disk
:查看硬盘大小
常用
conda环境安装
:链接
nohup python evaluate_pre.py >> evaluate.log &
:将任务挂在后台并且将日志输出到log文件
tail -f evaluate.log
:查看日志信息的实时更新情况
ls -lR|grep "^-"|wc -l
:linux查看文件夹下的文件
个数(不包含子目录)
ls -lR|grep "^d"|wc -l
:linux查看文件夹下的文件夹
个数(不包含子目录)
包含子目录就是
ls -lR
ps aux | grep -E 'train.py' | grep -v grep |awk '{print $2}' |xargs kill -s 9:
杀死所有的数据加载进程(因为设置了num_works,所以会有很多个进程来读数据)
ssh连接
# 连接格式为
ssh 用户名@IP
# 例如 , 然后 正确 输入用户名对应 密码即可
ssh moli@168.168.1.xx
2、Ubuntu相关
相关资料:
学习ubuntu基础看完这一篇就够了,我是貔貅带你打开ubuntu的大门
centos系统和Ubuntu系统命令区别以及常见操作
Ubuntu虚拟机基本配置
1.常用操作:
# 查看版本
cat /proc/version
2.安装VMWare Tools:
VMWare Tools的作用:
1、可以直接粘贴命令在 windows 和 centos 系统之间;2、可以设置 windows 和 centos 的共享文件夹。 我主要还是冲着1去的
点击VM的虚拟机选项卡,选择安装VMWare Tools
之后桌面上就会多出一个VMWare Tools的光盘
双击打开光盘,将tar包右键复制到自己知道位置的地方,如我选择复制到~/software
下
接着解压它
sudo tar -zxvf 文件名
解压成功发现产生对应文件夹
接着就可以安装了
cd 文件名
sudo ./vmware-install.pl
注意安装的时候,最开始的Do you still want to proceed with this legacy installer?[no] ,要输入yes,否则进展不下去了,后面一路回车就好了。
然后就安装成功了~
3.配置国内的apt-get更新源
主要就是修改/etc/apt/sources.list
这个配置文件,一种方法就是直接编辑这个文件,手动替换,另一种就是使用sed -i
命令批量操作。
第一步还是备份一下官方的源:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
第二步就是换源了(比如换成华为的):
sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
第三步就是更新源列表:
sudo apt-get update
结果:
ps:其他源
:
# 阿里云
http://mirrors.aliyun.com/ubuntu/
# 清华
https://mirrors.tuna.tsinghua.edu.cn/ubuntu/
# 中科大
https://mirrors.ustc.edu.cn/ubuntu/
# 163
http://mirrors.163.com/ubuntu/
4.xshell连接虚拟机
安装ssh
sudo apt install openssh-server
sudo apt install openssh-client
qidongssh
sudo service ssh start
# 下次开机时,自动启动
sudo systemctl enable sshd.service
注:
问题:
遇到以下报错是由于系统预置有openssh-client,但是版本与apt服务端openssh-server的版本不匹配。
解决:
删除已有版本,重新安装openssh-server。
sudo apt-get remove --purge openssh-client
sudo apt install openssh-server
查看虚拟机ip
安装net-tools:sudo apt install net-tools
查看ip:ifconfig
xshell连接:
虚拟机软件的一些问题
VMware中,主机无法连接虚拟机:
背景:
我在重新安装VMware后,发现主机无法连接虚拟机,后发现是没有卸载干净,导致在网络连接中没有VMnet1和VMnet8这两个网络适配器。
具体方法:
快速解决VMware安装后没有VMnet1和VMnet8网络
VirtualBox中,主机无法连接虚拟机:
背景:
因为VirtualBox新创建的虚拟机,默认是一个网卡,网络类型是NAT,此方式下与VMware不同的是,virtualbox的效果是,虚拟机可以ping通宿主机,宿主机ping不通虚拟机。
具体方法:
VirtualBox虚拟机配置双网卡同时链接内外网
设置VirtualBox共享文件夹
背景:
一般情况下不需要共享文件夹,直接用xftp或者vscode传说文件,但是最近发现主机又又连不上虚拟机了…
具体方法:
设置VirtualBox共享文件夹的方法