Skip to content

Linux101

Linux Bash

参考资料

文件系统

cprm处理文件夹的时候要加-r

find /home -name "*.txt"

文件结构

根目录/ 用户目录/home/username

  • /etc: 配置文件
  • /bin: 实际上是指向/usr/bin的软链接
  • /etc 配置文件
  • /opt 大型的商业软件(有自己的安装程序)
  • /usr 大部分软件安装的地方
    • /usr/local 用户自行安装软件(不通过apt)

文件权限

ls -l

文件类型(一位)、文件所属用户的权限(三位)、文件所属用户组的权限(三位)、其他人的权限(三位)。对于每个权限,第一位 r 代表读取 (Read),第二位 w 代表写入 (Write),第三位 x 代表执行 (Execute),- 代表没有对应的权限

目录权限: 可以把目录视为一个「文件」来看待,这个文件包含了目录中下一层的文件列表——「读取」对应读取文件列表的权限,「写入」对应修改文件列表(添加、删除、重命名文件)的权限,「执行」对应实际去访问列表中文件、以及使用 cd 切换当前目录到此目录的权限。

查看目录

  • ls -a查看隐藏文件:以“.”开头的文件或目录默认被视为隐藏文件或目录,通常是一些系统配置文件。
  • ls -l 查看文件和目录的详细信息,包括文件权限,文件数量,文件所有者,文件大小(以字节为单位),和最近修改的时间。如果想以更易读的方式查看文件大小(例如KB,MB等),可以使用ls -lh
  • du -sh dir 查看目录总大小(ls只能看文件)。du -sh dir/*查看目录下所有子目录大小

解压文件

# .tar.gz 和 .tgz
tar -zxvf FileName.tar.gz               # 解压
tar -zcvf FileName.tar.gz DirName       # 将DirName和其下所有文件(夹)压缩
tar -C DesDirName -zxvf FileName.tar.gz # 解压到目标路径

#.zip
unzip file.zip 

unzip file.zip -d /path/to/destination/directory/
-P password

# 参考https://blog.csdn.net/songbinxu/article/details/80435665

环境变量

查看cpu状态

nvidia-smi
nvtop

例子: 设置GPU.

CUDA_VISIBLE_DEVICES=0    python  your_file.py  # 指定GPU集群中第一块GPU使用,其他的屏蔽掉
CUDA_VISIBLE_DEVICES=1           #Only device 1 will be seen
CUDA_VISIBLE_DEVICES=0,1         #Devices 0 and 1 will be visible

软链接

创建:

ln -s /mnt/d/data data

这样在当前目录下cd data 就可以到达/mnt/d/data

ls -l 目录名 来查看目录下是否有软链接。如果有,可以看到形如:

lrwxrwxrwx 1 username 38  6月 23  2024 软连接名 -> 实际目录

进程管理

终端中Ctrl+Z暂停命令, Ctrl+C停止

后台运行

nohup后台运行command

nohup command > output.txt &

终端中运行的命令放到后台

如果已经启动了一个前台命令,可以按 Ctrl + Z 暂停它,然后将它移到后台并继续运行:

# 按 Ctrl + Z 暂停命令
bg #将命令移到后台
disown -h #使用 disown 解除与终端的关联,这样退出终端后,该进程不会退出

后台指令放到终端

首先使用 jobs 命令查看 当前终端 所有的后台任务,例如:

jobs

输出类似这样:

[1]-  Running                 long-command-1 &
[2]+  Running                 long-command-2 &

然后使用 fg 命令将你需要的任务调至前台,例如将第二个任务调至前台:

fg %2

htop

ps

查找名为abcd的进程

ps aux | grep abcd #结果会包括grep命令本身
ps aux | grep "[a]bcd" #正则表达式,强制匹配以a开头的

kill

kill -SIG  PID

常用的选项有:

  • SIGSTOP(19) 暂停进程
  • SIGCONT(18) 继续执行被暂停的进程
  • SIGKILL(9) 强制终止进程,不能被捕捉、阻塞、忽略

查看端口占用

ss -tuln | grep 端口号  #t是tcp,u是udp

sudo lsof -i 协议名:端口号

用户管理

  • 添加名为newuser的用户

    sudo adduser newuser,然后填写信息

  • 给用户添加sudo 权限sudo usermod -aG sudo newuser

ssh

配置ssh

在远程服务器上:

#将本机的id_rsa.pub添加到远程服务器上对应用户~/.ssh/authorized_keys中
cat id_rsa.pub >> ~/.ssh/authorized_keys

在本地,编写~/.ssh/config文件,添加如下内容:

Host myname #自定义名称,也可以是ip地址
    HostName hostname #远程服务器的ip地址
    User username #远程服务器的用户名
    IdentityFile ~/.ssh/id_rsa #本地私钥文件,默认为~/.ssh/id_rsa,如果有多个私钥文件,可以指定
    Port xxxx #远程服务器的端口号,默认22

sudo chown -R ypy:ypy /home/ypy/.ssh && sudo chown -R ypy:ypy /home/ypy/.ssh/authorized_keys

sudo chmod 700 /home/ypy/.ssh && sudo chmod 600 /home/ypy/.ssh/authorized_keys

登录

ssh myname
#或
ssh username@hostname -p xxxx

scp

scp -r /path/to/local/file username@hostname:/path/to/remote/file

sftp

sftp基本指令

上传文件:  把本地服务器的/www/wwwroot目录下面的study.log文件上传到远程服务器的/www/server目录下。
sftp> lcd /www/wwwroot
sftp> put study.log /www/server

上传文件夹:把本地服务器的/www/wwwroot目录下面的test文件夹上传到远程服务器的/www/server目录下。
sftp> put -r test /www/server

查看远程服务器/www/server目录下面的文件和文件夹
sftp> ls /www/server

网络下载

wget

  • wget网址里面含有&,+等特殊字符,把网址用""括起来

  • -O 选项(大写字母!!! )用于指定下载内容的输出文件。 示例:

wget -O output_file.txt http://example.com/file.txt
上述命令将下载 http://example.com/file.txt 并将其内容保存到本地文件 output_file.txt 中。

  • -o 选项(小写)则用于将 wget 的日志消息输出到指定的文件中。它不会影响下载的文件内容,只会指定日志的存放位置。

rsync

git

远程仓库

  1. 添加远程仓库
    git remote add origin <repository-url> #添加
    git remote set-url origin <new-repository-url> #修改
    
    这里的origin是远程仓库的默认短名称,<repository-url>是你想要连接的远程仓库的URL。

如果有多个远程仓库,可以自定义名称

  1. 列出所有远程仓库

    git remote -v
    
    -v参数表示显示远程仓库的详细信息,包括它们的URL。

  2. 拉取远程仓库的更新并自动合并

git pull origin branch-name
这个命令会从远程仓库的branch-name分支拉取内容并尝试自动合并到当前分支。

  1. 推送本地更改到远程仓库

    git push origin branch-name
    
    将分支branch-name的内容推送到远程仓库。

  2. 推送当前分支的所有本地更改到远程仓库

    git push
    
    如果当前分支与远程分支有跟踪关系,这个命令会默认推送当前分支。

  3. 从远程仓库拉取内容/手动合并:

git fetch origin #拉取,不合并
git merge origin/branch-name

将远程仓库的branch-name分支合并到当前分支。

shell

短学期 教材

make

Comments