Linux常用指令

文章目录

  • Linux常用指令
    • 1. 目录操作
    • 2. 文件管理
    • 3. 用户管理
    • 4. 压缩/解压工具
    • 5. 环境变量与文件查找
      • 5.1 环境变量
      • 5.2 文件查找
    • 6. 磁盘管理
    • 7. 帮助命令
    • 8. 任务计划
    • 9. 命令执行顺序
    • 10. 管道过滤
    • 11. 进程管理
    • 12. 软件安装
    • 13. 日志系统
    • 14. 查看系统各种信息
    • 15. 关机重启
    • 16. 服务器为Linux系统
      • 16.1 本地与Linux互传文件
        • 16.1.1 lrzsz程序
        • 16.1.2 scp命令
        • 16.1.3 sftp命令
        • 16.1.4 xftp软件
    • 17. Linux相关
      • 17.1 **Linux**快捷键
      • 17.2 CMAKE
        • 17.2.1 安装cmake
        • 17.2.2 使用cmake
    • 18. 深度学习相关
        • 17.2.2 使用cmake
    • 18. 深度学习相关

Linux常用指令

1. 目录操作

目录切换 cd

# 切换到根目录
cd /
# 切换到根目录的usr目录
cd /usr
# 返回上一级目录 
cd ..
cd ../
# 切换到home目录
cd ~
# 切换到上次访问的目录
cd -

目录查看 ls [-a]

# 查看当前目录下的所有目录和文件
ls
# 查看当前目录下的所有目录和文件(包括隐藏的文件)
ls -a
# 列表查看当前目录下的所有目录和文件
ls -l
# 查看指定目录下的所有目录和文件
ls /dir

创建目录 mkdir

# 当前目录创建名为mydir的目录
mkdir mydir
# 指定目录usr下创建名为mydir的目录
mkdir /usr/mydir
# 使用-p参数创建多级目录
mkdir -p father/son/grandson

删除目录 rm

# 删除名为mydir的目录,需要加'-f'参数
rm -f mydir
# 忽略提示删除
rm -rf mydir

复制目录

# 复制目录需加'-r'参数,表示递归复制。将father目录复制到family目录 
cp -r father family

删除目录

# 删除目录也需要加'-r'参数,删除mydir这个目录
rm -r mydir

搜索目录

# find 目录 参数 文件名称
# 查找/usr/temp下以'a'开头的文件或目录
find /usr/temp -name 'a*'

查看当前所在目录

pwd

2. 文件管理

创建文件

# 创建名为test的文件
touch test
# 创建一个名为file.txt的文件
touch test.txt

复制文件

# 复制test的文件到mydir目录中
cp test /home/mydir

删除文件

# 删除test文件
rm test
# 忽略提示删除test文件
rm -f test

移动文件

# 将test文件移动到mydir目录下
mv test mydir

重命名文件

# 将test改名为myfile
mv test myfile

# 将后缀为.txt改名为以 .c 为后缀的文件,'.'需要加'\'
rename 's/\.txt/\.c/' *.txt

查看文件

# 查看test文件
cat test
# 查看test文件,-n显示行号
cat -n test

# 百分比显示查看文件
more test

# 翻页查看
less test

# 查看文件的第一行,-n接行数
tail -n 1 test

查看文件的类型

# Linux中根据内容识别类型,而不是后缀,无内容为空文件
file test.txt

编辑文件

# 使用vim编辑器编辑文件
vim test.txt

打印文件内容

cat filename

变更文件所有者

#切换到 lilei 用户,然后在 /home/lilei 目录新建一个文件,命名为 test
su - lilei
pwd
touch test
# 显示文件大小,并以普通人类能看懂的方式呈现
ls -alh test


# 变更文件test所有者为zhangsan
sudo chowm zhangsan test

修改文件权限

# r w x(读、写、执行) -> r*2^2 + w*2^1 + x*2^0
# 666->读、写、不执行
# 777->读、写、执行
# 修改为读写,不具有执行权限 rw-rw-rw=666
chmod 666 file

3. 用户管理

查看当前用户

who am i

创建用户

# 创建一个叫lilei的用户
sudo adduser lilei

删除用户

# 删除用户及其工作目录
sudo deluser lilei --remove-home

切换登录用户

# 切换到root用户,原来路径
su
# 切换到root用户,root路径
su -

# 切换到用户lilei
su -l lilei

用户权限

# sudo授予用户root权限
su -l lilei
sudo ls

为用户添加密码

# 为用户lilei添加密码
passwd lilei

修改用户密码

# 修改root用户密码
passwd

# 修改用户lilei密码
passwd lilei

# 锁定用户lilei不能更改密码
# -l 参数来锁定
passwd -l lilei

# 清除lilei用户密码
# 清除一个用户的密码 用参数-d
passwd -d lilei

# 查询用户lilei密码状态
passwd -s lilei

新建用户组

# 新建用户组test
groupadd test

查看用户组

# groups命令查看lilei所在用户组
groups lilei

# 查看用户及分组
cat /etc/passwd

# 查看现有用户组
cat /etc/groups

修改用户组

# 修改用户组名group1为group2
groupmod -n group1 group2

设置某个用户所在组

# -g|--gid,修改用户的gid,该组一定存在
usermod -g 用户组 用户名

# 把用户添加进入某个组
# -a|--append,把用户追加到某些组中,仅与-G选项一起使用
# -G|--groups,把用户追加到某些组中,仅与-a选项一起使用
usemod -a -G 用户组 用户名

# 使用 usermod 命令可以为用户添加用户组
groups lilei
# 将lilei添加到sudo用户组
sudo usermod -G sudo lilei

删除用户组

# 使用groupdel删除用户组
# root用户或具有sudo权限的用户执行
sudo groupdel group_name

4. 压缩/解压工具

压缩包文件格式

Windows: *.zip*.7z

Linux: *.zip*.7z**.rar*.gz*.xz*.bz2*.tar等等

zip压缩文件

# 使用zip打包文件夹test
# -r为递归打包包含子目录的全部内容,-q为安静模式,-o表示输出文件
cd /home/test
zip -r -q -o test.zip /home/mydir

# -e参数加密压缩
zip -r -e -o test.zip /home/mydir

unzip解压缩文件

# 解压到当前目录
unzip test.zip

# -q安静模式,解压到指定目录
unzip -q test.zip -d mydir

# 不解压只查看压缩包的内容
unzip -l test.zip

# 解压中文压缩包
unzip -O GBK 中文压缩文件.zip

tar打包工具

tar压缩

# 打包test文件
# -P:保留绝对路径
# -c:创建一个tar包
# -f:指定创建文件名
cd /home/test
tar -P -cf test.tar /home/mydir

tar解压

# 解包一个文件(-x参数)到指定路径的已存在目录(-C参数)
mkdir mydir
tar -xf test.tar -C mydir

# -t参数,只查看不解包
tar -tf test.tar

# 解压*.tar.gz文件,-z参数
tar -xzf test.tar.gz

5. 环境变量与文件查找

5.1 环境变量

环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。

查看PATH环境变量内容

echo $PATH

添加自定义路径到"PATH"环境变量,如果使用的环境的Shell 是 Bash,则配置文件为 .bashrc

# 查看当前系统已安装的 Shell
cat /etc/shells

添加环境变量

# 使用下面命令直接添加内容到 `.bashrc` 中
# > 以覆盖的方式重定向到一个文件中
# >> 将标准输出以追加的方式重定向到一个文件中
echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc

修改和删除环境变量

# ${变量名%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最短数据
mypath=$PATH
echo $mypath
mypath=${mypath%/home/lilei/mybin}

# 或者使用通配符,*表示任意多个字符
mypath=${mypath%*/mybin}

# 删除一个环境变量
unset mypath

使环境变量立即生效

cd /home/lilei
source .bashrc

# 或者 source 别名 .
. ./.bashrc

5.2 文件查找

相关命令whereiswhichfindlocate

# 寻找find所在路径
whereis find

# 寻找ping程序的位置
which ping

# 寻找/etc/下名为interfaces的文件或目录,(sudo增加访问权限)
sudo find /etc/ -name interfaces

# 查找/etc下所有以sh开头的文件
locate /etc/sh
# 查找/usr/share/下所有jpg文件
locate /usr/share/*.jpg

6. 磁盘管理

查看磁盘和目录容量

# 查看磁盘容量
df
# '-h'参数,以人类可读格式展示
df-h

# 查看目录容量
du
# '-h'参数,以人类可读格式展示
du -h
# '-d'参数,查看目录的深度
# 1级目录
du -h -d 0 ~
# 2级目录
du -h -d 1 ~

查看内存使用情况

free -h

磁盘分区情况

fdisk

创建虚拟磁盘

# 使用 dd 命令创建虚拟镜像文件
# if:输入文件
# of:输出文件
# bs:指定块大小
# count:指定块数量
# 从/dev/zero设备创建一个容量为256M的空文件
dd if=/dev/zero of=virtual.img bs=1M count=256
du -h virtual.img

# 使用mkfs命令格式化磁盘
sudo mkfs.exit virtual.img

# 使用mount命令挂载磁盘到目录树
# mount [options] [source] [directory]
sudo mount
mount -o loop -t ext4 virtual.img /mnt

# 查看硬盘分区表信息
sudo fdisk -l
# 使用fdisk为磁盘分区
sudo fdisk virtual.img

# 使用 losetup 命令建立镜像与回环设备的关联
sudo losetup /dev/loop0 virtual.img

# 使用 mkfs 格式化各分区
# 先安装kpartx工具
sudo apt-get install kpartx
sudo kpartx -av /dev/loop0
# 格式化,我们将其全部格式化为 ext4
sudo mkfs.ext4 -q /dev/mapper/loop0p1
sudo mkfs.ext4 -q /dev/mapper/loop0p5
sudo mkfs.ext4 -q /dev/mapper/loop0p6

# 格式化完成后在 /media 目录下新建四个空目录用于挂载虚拟磁盘
mkdir -p /media/virtualdisk_{1..3}

# 挂载磁盘分区
sudo mount /dev/mapper/loop0p1 /media/virtualdisk_1
sudo mount /dev/mapper/loop0p5 /media/virtualdisk_2
sudo mount /dev/mapper/loop0p6 /media/virtualdisk_3

# 查看
df -h

7. 帮助命令

helpmaninfo命令

# 简要帮助信息
ls --help

# 更为详细的帮助信息
man ls

# 完整帮助信息
info ls

8. 任务计划

添加计划

# 启动crontab
sudo cron -f &
crontab -e

# 可选择vim添加命令
# *  *  *  *  * command
# 分 时 日  月  周 命令
# 第1列为分:用*或者*/1表示
# 第5列为周:0~6,0表示星期天

# 每分钟执行date命令
*/1 * * * * date >> root/date.txt

# 每周三、周日的2 : 30重启apache。 
30 2 * * 3,0 service httpd restart

# 在/home/mydir目录下每分钟创建一个以年月日时分秒为名字的空白文件
*/1 * * * * touch /home/mydir/$(date + \%Y\%m\%d\%H\%M\%S)

查看计划

crontab -l

监测计划

ps aux | grep cron

删除计划

crontab -r

9. 命令执行顺序

顺序执行 ;

sudo apt-get update;sudo apt-get install some-tool

选择性执行&&,前面命令执行结果返回0则执行后面的

which cowsay>/dev/null && cowsay -f head-in ohch~

||前面命令执行结果不为0才执行后面的

which cowsay>/dev/null || echo "cowsay has not been install"

10. 管道过滤

cut命令

# 打印 /etc/passwd 文件中以 : 为分隔符的第 1 个字段和第 6 个字段分别表示用户名和其家目录
cut /etc/passwd -d ':' -f 1,6

# 打印/etc/passwd文件中每一行的前N个字符
# 前五个(包含第五个)
cut /etc/passwd -c -5
# 前五个之后的(包含第五个)
cut /etc/passwd -c 5-
# 第五个
cut /etc/passwd -c 5
# 2 到 5 之间的(包含第五个)
cut /etc/passwd -c 2-5

grep命令,在文本中查找匹配字符串

# 搜索/home/shiyanlou目录下所有包含"shiyanlou"的文本文件
# 并显示出现在文本中的行号
# -r:递归搜索子目录
# -n:打印匹配项行号
# -I:忽略二进制文件
grep -rnI "shiyanlou" ~

# 查找指定ssh服务进程
ps -ef | grep sshd

wc命令,计数工具

# 显示/etc/passwd中的行数
wc -l /etc/passwd
# 单词数
wc -w /etc/passwd
# 字节数
wc -c /etc/passwd
# 字符数
wc -m /etc/passwd
# 最长行字节数
wc -L /etc/passwd

sort排序命令

# 默认为字典排序
cat /etc/passwd | sort

# 按特定字段排序
# -t参数,指定分割符为':'
# -k参数:字段号,指定对哪个字段进行排序
cat /etc/passwd | sort -t ':' -k 3

uniq去重命令

uniq

11. 进程管理

查看系统关键信息

top

所有进程信息

ps aux 

查看占用CPU最多的进程

ps aux --sort=-%cpu | head

进程相关性

pstree
# -u:同时列出每个 process 的所属账户名称
# -p:同时列出每个 process 的 PID
pstree -up

结束进程

# 使用 9 这个信号强制结束 gedit 进程
# kill pid-> pid:进程号
kill -9 1608

12. 软件安装

软件安装

# 安装w3m(命令行简易网页浏览器)
sudo apt-get install w3m -y
# 重新安装w3m
sudo apt-get --reinstall install w3m -y

软件升级

# 更新软件源
sudo apt-get update

# 升级没有依赖问题的软件包
sudo apt-get upgrade

# 升级并解决依赖关系
sudo apt-get dist-update

软件卸载

# 卸载w3m
sudo apt-get remove w3m

软件搜索

# 搜索w3m
sudo apt-get search w3m

使用dbkg本地安装deb软件包

# 使用dpkg安装
sudo dpkg -i emacs24_24.5+16ubuntu1.1_amd64.deb

# 解决本地安装包的依赖关系
sudo apt-get update
sudo apt-get -f install -y

查看已安装软件包的安装目录

sudo dpkg -L emacs24

13. 日志系统

# 日志一般存放在 /var/log
ll /var/log

# 查看日志
sudo cat /var/log/apt/history.log

# 删除日志
sudo rm /var/log/apt/history.log

14. 查看系统各种信息

系统基本信息

uname

CPU详细信息

lscpu

内存使用情况

free

系统实时进程状态

top

网络接口信息

ipconfig

网络连接相关信息

netstat

磁盘分区信息

fdisk

磁盘使用情况

# '-h'参数,以人类可读形式
df -h

系统主机名等信息

hostnamectl

15. 关机重启

关机

# 立刻关机
shutdown -h now

# 5分钟后关机
shutdown -h 5

# 立刻关机
poweroff

重启

# 立刻重启
shutdown -r now

# 5分钟后重启
shutdown -r 5

# 立刻重启
reboot

清屏

# ctrl + l

16. 服务器为Linux系统

登录服务器

# 用户名@服务器IP地址或主机名
ssh username@server_ip_address

# '-p'参数指定端口号
ssh -p 2222 [email protected]

查看服务器信息,如果用的是NVIDIA的GPU

nvidia-smi

16.1 本地与Linux互传文件

16.1.1 lrzsz程序

使用xshell软件ssh,上传本地文件到服务器

# 选择本地文件上传到服务器
rz 

# 如果没有则安装lrzsz
yum -y install lrzsz

# 检查是否安装成功
rpm -qa lrzsz
16.1.2 scp命令

cmd打开本地命令行

将本地文件上传到Linux

# 选择本地文件上传到服务器
# 远程主机用户名@ip:需要上传到主机的路径
scp /User/pc/Desktop/test.png root@192.169.1.1:/root

# 上传本地文件夹
scp -r /Users/pc/Desktop/test root@192.168.1.1:/root

将服务器上的文件传输到本地

# scp 远程主机用户名@ip:服务器上存放文件的路径 下载到本地的文件路径
scp root@192.168.1.1:/root/test.png /user/pc/Desktop

# 传输服务器的文件夹
scp -r root@192.168.1.1:/root/test /Users/mac/Desktop
16.1.3 sftp命令

cmd打开本地命令行

将本地文件/文件夹上传到Linux

# 1、建立sftp连接,sftp 用户名@服务器IP地址
sftp username@ip

# 2、查看本地路径
lpwd
# 显示远端路径
pwd

# 3、本地上传文件到服务器
# put 本地文件路径 目的主机路径
put D:/text.txt /home/test/

# 将本地的D:/目录下面的text.txt文件上传到远程服务器的/home/test目录下
sftp> lcd D:/
sftp> cd /home/test
sftp> put text.txt

下载服务器文件/文件夹到本地

# 建立sftp连接,sftp 用户名@服务器IP地址
sftp username@ip

# 将远程服务器的/home/test目录下面的log文件夹下载到本地服务器的D:/test目录下
# get 远程路径/文件名 本地路径
sftp> cd /home/test
sftp> lcd D:/test
sftp> get -r log
16.1.4 xftp软件
  1. 打开软件,新建会话
  2. 输入名称,主机选择,选择sftp协议,端口22
  3. 用户名和密码连接
  4. 左右拖动文件实现文件互传

17. Linux相关

17.1 Linux快捷键

复制:ctrl + shift + c

粘贴:ctrl + shift + v

中断运行程序:Ctrl + c

退出当前shell命令行,如果是切换过来的用户,则执行这个命令回退到原用户:Ctrl + d

17.2 CMAKE

17.2.1 安装cmake

1、下载cmake包,输入指令解压缩

sudo tar -zxvf cmake-3.8.2.tar.gz

2、进入解压缩的后的文件夹

sudo ./bootstrap
sudo make
sudo make install

3、查看是否安装成功

cmake --version
17.2.2 使用cmake

1、新建目录hello, 依次创建文件main.c, CMakeLists.txt, build目录

2、main.c文件代码如下

#include 

int main(void){
    printf("Hello\n");
    return 0;
}

3、CMakeLists.txt 文件代码如下

CMAKE_MINIMUM_REQUIRED(VERSION 3.8) #cmake最低版本需求,不加入此行会受到警告信息

PROJECT(HELLO) #项目名称  

AUX_SOURCE_DIRECTORY(. SRC_LIST) #把当前目录(.)下所有源代码文件和头文件加入变量SRC_LIST

ADD_EXECUTABLE(hello ${SRC_LIST}) #生成应用程序 hello (在windows下会自动生成hello.exe)

4、进入build目录

cmake ..
make
./hello

18. 深度学习相关

Anaconda软件

查看当前已有环境

conda info -e

创建环境

conda create -n name python=3.5

激活环境

# 激活环境
source activate name
# 或者
activate name

查看已有库和安装新库

# 查看已有库和安装新库
conda list
conda install numpy

退出当前环境

conda deactivate

删除已创建的环境

# name可以通过conda info e-查看
conda remove -n name  

cmake-3.8.2.tar.gz


2、进入解压缩的后的文件夹

```shell
sudo ./bootstrap
sudo make
sudo make install

3、查看是否安装成功

cmake --version
17.2.2 使用cmake

1、新建目录hello, 依次创建文件main.c, CMakeLists.txt, build目录

2、main.c文件代码如下

#include 

int main(void){
    printf("Hello\n");
    return 0;
}

3、CMakeLists.txt 文件代码如下

CMAKE_MINIMUM_REQUIRED(VERSION 3.8) #cmake最低版本需求,不加入此行会受到警告信息

PROJECT(HELLO) #项目名称  

AUX_SOURCE_DIRECTORY(. SRC_LIST) #把当前目录(.)下所有源代码文件和头文件加入变量SRC_LIST

ADD_EXECUTABLE(hello ${SRC_LIST}) #生成应用程序 hello (在windows下会自动生成hello.exe)

4、进入build目录

cmake ..
make
./hello

18. 深度学习相关

Anaconda软件

查看当前已有环境

conda info -e

创建环境

conda create -n name python=3.5

激活环境

# 激活环境
source activate name
# 或者
activate name

查看已有库和安装新库

# 查看已有库和安装新库
conda list
conda install numpy

退出当前环境

conda deactivate

删除已创建的环境

# name可以通过conda info e-查看
conda remove -n name  

你可能感兴趣的:(随笔,linux,服务器,运维)