栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux Shell 命令使用笔记

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux Shell 命令使用笔记

PS:本人记录的一些 Linux Shell 命令使用笔记。本文同时发布在个人GitHub Pages上了,欢迎交流。

1. 用户、权限管理 1.1. 创建用户
# 创建用户
sudo useradd -r -m -s /bin/bsah 用户名
# 设置密码
sudo passwd 用户名

# 指定目录下创建用户
sudo useradd -d /data/home/test -r -m -s /bin/bash test
# 或者:sudo useradd -d /home/test -m test
1.2. 服务器用户登录
# ssh登录
ssh 用户名@ip

# vocode免密登录
ssh-keygen -t rsa -b 4096  # 本地CMD,运行下面命令,生成本地配置文件(若已生成,则用原来生成的)
scp 本地配置路径/.ssh/id_rsa.pub 用户名@ip地址:~/tmp.pub  # 将生成的秘钥(id_rsa.pub),传输到远程服务器
ssh 用户名@ip地址 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat ~/tmp.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && rm -f ~/tmp.pub"  # 将秘钥写到远程服务器的ssh配置文件中
# 若因.ssh文件权限改变而无法免密登录,可执行如下命名:
chmod 700 /用户主目录/
chmod 700 /用户主目录/.ssh/
1.3. 权限管理
# 把某个文件夹及其内容的权限授权给用户
sudo chown -R 用户名 文件夹
sudo chown -R 用户:组 文件夹  # 同时指定用户组

# 给用户主目录设置权限,使得只有该用户才能访问
sudo chmod -R 700 用户主目录

# 设置共享目录,并赋予读写权限
chmod -R 777 /sharedata

# 设置用户所属的群组
sudo usermod -g G1 ahhh  # 给将用户ahhh的群组设置为G1
sudo usermod -G G2 ahhh  # 此外,再给ahhh设置为另一个群组G2的成员

# 给test用户赋予管理员的权限
sudo adduser test sudo
2. 环境配置 2.1. python虚拟环境
# 创建
conda create -n 环境名 python=X.X
# 创建并安装库
conda create -n 环境名 numpy matplotlib python=X.X

# 激活
conda activate 环境名

# 查看已存在的虚拟环境
conda info -e  # 或 conda env lis
2.2. conda 镜像源
# 添加conda清华镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

# 换回conda的默认镜像源
conda config --remove-key channels
2.3. pip 镜像源

直接在~/.pip/pip.conf(若不存在,则新建该文件)中配置一下信息:

[global]
index-url = https://pypi.douban.com/simple
[install]
trusted-host = https://pypi.douban.com

或者在安装时

# 安装库时,指定镜像源
pip install -i  https://mirrors.aliyun.com/pypi/simple/ numpy

# 清华:https://pypi.tuna.tsinghua.edu.cn/simple
# 阿里云:http://mirrors.aliyun.com/pypi/simple/
# 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
# 华中理工大学:http://pypi.hustunique.com/
# 山东理工大学:http://pypi.sdutlinux.org/
# 豆瓣:http://pypi.douban.com/simple/

# note:新版ubuntu要求使用https源
2.4. 修改cuda版本
ls /usr/local  # 查看现有的cuda版本,系统会默认使用最新的cuda版本
vim ~/.bashrc  # 打开配置文件,并在最后添加如下内容:
export PATH=/usr/local/cuda-10.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH  # 其中,10.1则为要设置的cuda版本
# 重启当前终端,在新的终端中即可使用更改后的cuda
2.5. 创建快捷命令
vim ~/.bashrc  # 打开配置文档最后输入:
alias ns=nvidia-smi

# 保存后,激活配置   
source ~/.bashrc
# 即可使用 ns 快捷命令
2.6. 系统变量
env  # 查看所有系统变量
2.7. 远程-本地,端口映射
# 将远端的地址的端口8888,映射到本地的端口8888
ssh -L:8888:localhost:8888 usrname@ip
3. 系统命令 3.1. cpu
# 总逻辑CPU数 = 物理CPU个数 * 每颗物理CPU的核数 * 超线程数
# 物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 每颗物理CPU的核数
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 逻辑CPU总数
cat /proc/cpuinfo| grep "processor"| wc -l
# CPU型号
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
3.2. 显卡
# 查看显卡使用情况
nvidia-smi

# 如果有几秒钟的延时,可管理员运行
sudo nvidia-persistenced --persistence-mode
# 或者,下面的命令也可以提升nvidia-smi运行速度
sudo /usr/bin/nvidia-persistenced --verbose

# 查看0号、1号显卡的 当前温度、关机温度、减速温度
nvidia-smi -q -i 0,1 -d TEMPERATURE

# 实时刷新并高亮显示状态
watch -n 1 -d nvidia-smi # 或用Python库查看:watch -n 1 -d gpustat -cpu
3.3. 操作系统版本信息
cat /proc/version  # Linux查看当前操作系统版本信息
3.4. ip 3.4.1. 查看ip
# 查看服务器ip
ip addr  # inet 便是ip地址
ifconfig  # inet 便是ip地址
3.4.2. 修改ip
ifconfig eth0 192.168.12.22  # 重启后无效

vim /etc/sysconfig/network-scripts/ifcfg-eth0  # 重启后永久生效
3.5. 用户
# 查询当前登录的用户
who

# 查询当前登录的用户,及其相关信息
w
3.6. 进程
# 查看
top  # 当前所有进程,类似windows的任务管理器
fuser /dev/nvidia*  # 查看当前用户在某张显卡上运行的进程
sudo fuser -v /dev/nvidia*  # 查看所有用户在某张显卡上运行的进程

# 查询某个PID是哪个用户的
cd /proc/PID  # 进入对应进程的路径,输入 ll 即可查询该路径文件的所有者,即该PID所属用户

# 关掉
kill PID
# 强制关掉
kill -9 PID

# 杀死指定用户所有进程
kill -9 $(ps -ef | grep hnlinux)  # 方法一 过滤出hnlinux用户进程 
kill -u hnlinux  # 方法二

# 查看僵尸进程
ps -A -ostat,ppid,pid,cmd | grep -e '^[zZ]'
# 杀死僵尸进程(上面得到的PID中的第一个为父进程,杀死父进程即可)
kill -HUP ppid
3.7. 内存空间
# 查看CPU空余
free -h

# 查看磁盘内存空间
df -h
3.8. 开机自启
  • 编写需要开机自启的sh脚本,或者添加到适当的现有sh脚本中。

例如 autorunFFF.sh:

cd /home/XXX/FFF

nohup java -jar FFF.jar -start & echo $! 
  • 设置脚本权限
chmod 755 autorunFFF.sh
  • 将脚本移动到/etc/init.d目录下
sudo mv autorunFFF.sh /etc/init.d/
  • 更新脚本优先级
cd /etc/init.d/
sudo update-rc.d autorunFFF.sh defaults 90
  • 若要取消该开机自启脚本程序,则:
cd /etc/init.d/
sudo update-rc.d -f autorunFFF.sh remove
4. 字符匹配 4.1. 通配符
——
通配符含义
*文件代表文件名中所有字符
ls te*查找以 te 开头的文件
ls *html查找结尾为 html 的文件
?代表文件名中任意一个字符
ls ?.c只找第一个字符任意,后缀为 .c 的文件
ls a.?只找只有 3 个字符,前 2 字符为 a. ,最后一个字符任意的文件
[] "[” 和 “]”将字符组括起来,表示可以匹配字符组中的任意一个。“-” 用于表示字符范围。
[abc]匹配 a、b、c 中的任意一个
[a-f]匹配从 a 到 f 范围内的任意一个字符
ls [a-f]*找到从 a 到 f 范围内的任意一个字符开头的文件
ls a-f查找文件名为 a-f 的文件,当 “-” 处于方括号之外失去通配符的作用
如果要使通配符作为普通字符使用,可以在其前面加上转义字符。“?” 和 “*” 处于方括号内时不用使用转义字符就失去通配符的作用。
ls *a查找文件名为 *a 的文件
4.2. grep 全局正则表达式输出

grep (global regular expression print,全局正则表达式输出),是一个搜索工具。

# 例1 在文件中查找模式(单词)
grep ahhh /etc/passwd

# 例2 在多个文件中查找模式
grep ahhh /etc/passwd /etc/shadow /etc/gshadow

# 例3 使用-l参数列出包含指定模式的文件的文件名
grep -l ahhh /etc/passwd /etc/shadow /etc/fstab /etc/mtab

# 例4 使用-n参数,在文件中查找指定模式并显示匹配行的行号
grep -n ahhh /etc/passwd

# 例5 使用-v参数输出不包含指定模式的行
grep -v ahhh /etc/passwd  # 输出/etc/passwd文件中所有不含单词“ahhh”的行

# 例6 使用 ^ 符号输出所有以某指定模式开头的行
grep ^root /etc/passwd  # 输出/etc/passes文件中所有以“root”开头的行

# 例7 使用 $ 符号输出所有以指定模式结尾的行。
grep bash$ /etc/passwd  # 输出/etc/passwd文件中所有以“bash”结尾的行

# 例8 使用 -r 参数递归地查找特定模式
grep -r ahhh /etc/  # 递归的在/etc目录中查找“ahhh”单词

# 例9 使用 grep 查找文件中所有的空行
grep ^$ /etc/shadow

# 例10 使用 -i 参数(忽略字符的大小写)查找模式
grep -i ahhh /etc/passwd  # 在paswd文件中查找“ahhh”单词

# 例11 使用 -e 参数查找多个模式
grep -e "ahhh" -e "root" /etc/passwd  # 在一条grep命令中查找‘ahhh’和‘root’单词

# 例12 使用 -f 用文件指定待查找的模式
grep -f grep_pattern /etc/passwd  # 使用grep_pattern文件进行搜索

# 例13 使用 -c 参数计算模式匹配到的数量
grep -c -f grep_pattern /etc/passwd

# 例14 输出匹配指定模式行的前或者后面N行
grep -B 4 "games" /etc/passwd  # 使用-B参数输出匹配行的前4行

grep -A 4 "games" /etc/passwd  # 使用-A参数输出匹配行的后4行

grep -C 4 "games" /etc/passwd  # 使用-C参数输出匹配行的前后各4行
5. 文件管理 5.1. 文件大小
# 查看当前目录下所有文件总共的内存占用大小
du -sh

# 查看当前目录下,所有文件夹的内存占用大小
du -h
# 查看当前目录下,各一级目录的内存占用大小
du -h --max-depth=1  # 1 表示第一级目录
5.2. 复制文件
# 同一服务器下,复制文件夹及其内容
cp -r ***/文件夹名 ***/文件夹名 ***/文件夹名 /*/存放复制的文件夹的文件夹名
5.3. 输出重定向命令

Linux 允许将命令执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中。如:

ls > test.txt   # test.txt 如果不存在,则创建,存在则覆盖其内容
ls > test.txt 2>&1  # 2>&1:将标准错误输出重定向到标准输出

注意: > 输出重定向会覆盖原来的内容, >> 输出重定向则会追加到文件的尾部。

5.4. 查找文件 5.4.1. find

find 命令功能非常强大,通常用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。

常用用法:

——
命令含义
find ./ -name test.sh查找当前目录下所有名为test.sh的文件
find ./ -name ‘*.sh’查找当前目录下所有后缀为.sh的文件
find ./ -name “[A-Z]*”查找当前目录下所有以大写字母开头的文件
find /tmp -size 2M查找在/tmp 目录下等于2M的文件
find /tmp -size +2M查找在/tmp 目录下大于2M的文件
find /tmp -size -2M查找在/tmp 目录下小于2M的文件
find ./ -size +4k -size -5M查找当前目录下大于4k,小于5M的文件
find ./ -perm 0777查找当前目录下权限为 777 的文件或目录
find / -name “hadooop*” -exec rm {} ;查找并删除
5.5. 创建文件
touch test.out  # 创建单个文件

touch {test1.log, cache2.txt}  # 同时创建两个文件
6. 历史命令
history  # 显示命令历史

Ctrl+r  # 搜索历史命令
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/941414.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号