【杂谈】linux知识点总结

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 :显示当前日期

  1. date :
    (功能描述:显示当前时间)
  2. date +%Y
    (功能描述:显示当前年份)
  3. date +%m
    (功能描述:显示当前月份)
  4. date +%d
    (功能描述:显示当前是哪一天)
  5. 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共享文件夹的方法

3、基于linux的开发

conda环境安装
docker学习与使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值