作为需要必要掌握的基础命令,最近有好朋友跟我反馈说他不会,看我不锤死他。(当然,若是有写错的地方请指出)
本机连接Linux
打开本机电脑命令行,例如windows terminal
、mobaxterm
应用,步骤如下;
- 输入
ssh -p Port username@ip
;其中Port是linux主机的端口号,默认是22端口;username是linux主机的用户名,ip是就是ip地址;例如:ssh root@192.168.3.173
- 输入对应密码就可进入Linux系统了,但是进入的是命令行界面;(若是不想每次输入密码,可以配置免密,搜一下ssh免密登录即可)
(当然还有很多种连接方法:比如配置vnc-server连接图形界面;配置udp然后用windows远程桌面连接
来连接等等,这个以后有机会再写吧。另:推荐vscode+remote ssh插件,大家都说好用,大家说好才是真的好。)
Linux基本常用命令(记住了还需练习,多多使用便于记忆)
查看当前资源消耗,网络端口,进程号等
reboot
重启,shutdown
关机uname -a
显示系统信息;htop
界面出现cpu, 内存,应用等各项资源使用情况(若是提示没安装,输入sudo apt-get install htop
安装即可);nvidia-smi
NV显卡的资源消耗情况;每隔1s刷新一次:watch -n 1 nvidia-smi
,以下同理;free -h
内存使用情况;df -h
磁盘使用情况,(未挂载的不算);ps aux
列出当前所有使用的进程;ps aux | grep xxxx
查找指定线程xxxx,其中grep
是查找命令,后续应该会写到;kill pid
终止进程号为pid的进程;- 如果当前你执行了某个命令,想迅速终止他,按下
ctrl + c
即可; ifconfig
查看网口ip和当前网速;ping ip
测试主机通信;ip是指对方机器的ip地址;wget url
从网络连接url下载文件;curl -O
也是同等命令;history
查看历史命令记录;- Linux上的复制和粘贴会和windows有所不同,怕麻烦的话,就用鼠标右键;
文件夹操作
ls
列出当前文件夹内的所有文件和文件夹;(不展示隐藏文件)ls -lha
列出当前文件夹内的所有文件和文件夹,(不同上面的是,可以列出文件大小,读写权限,列出隐藏文件);ll
与该命令类似;tree -L 2 .
tree插件需要安装一下 (sudo apt-get install tree
),列出树状目录,深度为2;du -sh
查看该文件夹的大小;du -sh *
查看该文件夹下每一个文件(夹)的大小cd test/
进入test文件夹下,可以是多级文件夹;cd ..
进入上一级文件夹;…/代表的就是上一级目录cd -
返回到上次进来的文件夹;pwd
当前所在位置的绝对路径;mkdir -p test/subpath/
创建test/subpath/文件夹,如果是多级文件夹需要加上-p参数;rm -r test/
删除test/文件夹,也可以用rmdir xxx
命令来删除;rm -rf test/
直接删除(毫不犹豫);mv test/ test_copy/
如果当前文件下存在test_copy/文件夹,该命令是指将test文件夹移动到test_copy文件夹下;如果当前文件夹不存在test_copy/文件夹,则该命令是指将文件夹改名为test_copy/文件夹;mv test/ test2/subpath1/
将test文件(夹)移动到test_2/subpath1/路径下;cp -r test/ test2/subpath1/
将test文件(夹)拷贝到test_2/subpath1/路径下;-r表示recursivefind ./test/ -name main.so
会在test/文件夹根据名字main.so递归查找,返回查找到的路径,若是没有打印,则是没有找到;main.so等文件(夹)名字可以用通配符表示,例如main*,返回文件前缀是以main开头的;grep -r "pattern" ./test/subpath2/
在文件夹test/subpath2/下递归查找每一个文本中含有pattern关键字的文件;chmod -R 777 test/
递归赋予test/文件夹的权限(包括执行、读、写);-R表示递归recursive
scp -r username@ip:path ./test/
将远端文件(夹)拷贝到本地test/文件夹下;username服务器用户名,ip是服务器ip,path是服务器文件(夹)绝对路径。(ps:因为我们有需要把服务器上的下载下来或者把本地的文件传到服务器上去,所以可以用这个命令更方便些。)ln -s source_path link_path
创建文件(夹)软链接;(所谓软链接就是在link_path这里创建一个文件夹,然后进入该文件夹后,显示的内容和source_path中显示的内容是一样的。通常场景比如说数据集太大,文件夹太大不方便移动,磁盘空间不够,避免移来移去;删除link_path文件夹软链接就会消失了。)mount/umount
挂载/解挂载操作,这个你用到的时候再去另外搜索吧!
文件操作(和文件夹操作类似)
touch text.txt
在当前文件夹下创建一个文件,名为text.txt;ls -lh text.txt
查看text.txt文件有多大;cat text.txt
将text.txt的文件内容显示在命令行窗口上;head -n 10 text.txt
显示出text.txt的前10行;tail -n 10 text.txt
显示出text.txt的后10行;grep main_path text.txt
在text.txt文件中搜索查找rm text.txt
删除text.txt文件chmod 777 test.txt
赋予test.txt文件权限(包括文件执行、读写等);cp/mv
和文件夹操作相同;diff file1 file2
比较file1和file2文件的不同,打印差异;echo "" > text.txt
清空text.txt文件;其中echo是打印命令,> 是重定向符号,代表从头写入,>>代表追加写入;
vim text.txt
进入vim界面进行文件内容的修改;这里介绍一些基本的vim操作如下:gg
文件光标移动到文件开头;G
文件光标移动到文件尾行;p
粘贴,yy
复制当前行;ggdG
也可以清空内容;gg=G
格式化,例如c++代码格式化;/pig_id
文件查找;:set nu
显示行号;i
进入插入模式;这样你就可以在文件中编辑了,和记事本一样;- 你编辑完成后,按
ESC
键推出插入模式,按下:wq
保存退出;:q
退出但不保存;:q!
强制退出;
文件夹解压和压缩(只给出一些常用的哈)
unzip Pig.zip
# 解压zip -r Pig.zip test/
# 压缩,递归处理,将指定目录test/下的所有文件和子目录一并压缩tar -zxvf Pig.tar.gz
# 解压,tar -zxvf Pig.tar.gz -C test2/
# 将pig.tar.gz文件解压到test2文件夹下tar -zcvf Pig.tar.gz test/
# 将test/其下所有文件(夹)压缩
安装应用
- 遇到
xxx.run
,xxx.sh
文件,可以执行bash xxxx.run/sh
; - 遇到
xxx.deb
文件,可以执行dpkg -i xxx.deb
dpkg -l
列出当前系统中已经dkpg安装的软件以及软件包的状态;dpkg -l "nginx*"
查找某一应用;sudo dpkg -r xxx
卸载
- 有些软件下载下来是压缩包,所以只用运行解压命令即可;
tmux语法(apt-get install tmux)
先来说说为什么要用它呢,我们在连接服务器的时候可能会有如下需求:1.可能会起多个命令窗口,避免文件夹切来切去; 2.想让他一直保持在后台运行(比如训练任务);3.保存命令记录,便于回溯;
tmux new -s pig
新建名为pig的sessiontmux a -t pig
进入名为pig的sessiontmux ls
查看所有session;看!这里又出现了ls,所以命令其实并不多,常用就还是那么几个;ctrl+b, d
退出该session,但session处于detach状态,意思是里面的命令行或者运行着的任务其实还在;ctrl+d
退出,session退出了;ctrl+b, %
分为左右窗格;ctrl+b, "
分为上下窗格;ctrl+b, 方向键
切换到其他窗格;ctrl+b, x
关闭窗格;ctrl+b, c
新建一个窗口;ctrl+b, 序号
切换窗口
docker命令
请看我的这篇文章 地址在这
其他命令(可能不太常用?),但你可以稍微记一下大概是干什么的
source xxx
刷新配置文件等;alias sss=xxxx
给某一特定命令取个别名,方便快捷操作;export ssss=xxxxx
使ssss=xxxxx,且在该命令行销毁前一直是生效状态;
shell语法(这个我想有时间再更吧~)
好的,那么到这里,相信你已经掌握了基本的Linux’基本命令,带着这些知识去探索Linux世界吧!加油!