平时捣鼓Linux时总会存在一些问题,因此将问题汇总在这里。
7-17 节的内容参考自尚硅谷 Linux 教程。
1. screen -r 出现问题
使用screen -r
时经常会出现报错:There is no screen to be resumed matching
问题原因是,出现了重名screen
,因此需要先执行分离操作,再恢复screen
解决方法是:screen -d -r [id]
2. tar解压缩
tar格式很多,但v1.15版本以上的tar
只需要tar -xvf
命令即可自动完成识别,并进行解压
tar -xvf filename.tar.gz
tar -xvf filename.tar.bz2
tar -xvf filename.tar.xz
tar -xvf filename.tar.Z
3. 进程后台运行
3.1 当前shell中将进程放入后台运行
进程开始时可以采用(cmd &)
的方法后台运行。但已经开始的进程如何转入后台呢?其实很简单
ctrl + z
# 将已经执行的进程放到后台挂起
jobs
# 查看任务,返回任务状态及编号
bg %n
# 将编号为n的任务放到后台继续执行
fg %n
# 将编号为n的任务放到前台继续执行
kill %n
# 杀死编号为n的任务
3.2 断开shell后保持进程后台运行
ctrl + z
的方法只能在当前shell中放入后台运行,但关闭shell后,进程会中断
查阅网上各种资料,有介绍各种方法的。其实采用screen
方法更加简单
screen -S abc
# 新建窗口
Ctrl + A + D
# 退出窗口
screen -r abc
# 返回窗口
4. 无法安装vim等软件
配置新电脑ubuntu
环境时,发现无法安装vim
等软件,显示如下问题
解决方法是换源。那么,如何在没有vim
的情况下换源呢?终端输入如下命令即可
$ sudo gedit /etc/apt/sources.list
将源替换成阿里云源后,Ctrl+s
存储文件,在终端输入
$ sudo apt-get update
随后即可安装vim
等软件
5. 配置环境变量
ubuntu的环境变量存储在~/.bashrc
中。export
添加指定路径后,不要忘记添加:$PATH
$ vim ~/.bashrc
# 在最后一行添加如下命令
export PATH=~/anaconda3/bin:$PATH
# 修改时不要忘记后面添加一个:$PATH
6. Anaconda常用命令
之前总是现查Anaconda
不常用的相关命令,现在记录一下
6.1 升级相关命令
$ conda update conda
# 基本升级
$ conda update anaconda
# 大升级
$ conda update anaconda-navigator
# navigator升级
6.2 环境相关命令
$ conda create -n [name] python=[pythonVersion]
# 创建环境
$ conda remove -n [name] --all
# 删除环境
$ conda env list
# 查看环境列表(推荐)
$ conda info --envs
# 同样是查看环境列表
6.3 包相关命令
$ anaconda show [packageName]
# 查找指定包版本信息
$ conda install --channel [url]
# 利用anaconda show获得的网址下载指定版本的包
6.4 其他命令
$ conda clean -p
# 删除没有用的包
$ conda clean -t
# 删除tar
7. Unix 和 Linux 关系
8. Linux 目录结构
Linux 一切皆为文件。
Linux 重要的目录内容包括:
- /bin :存放最常使用的命令。
- /home :存放普通用户的主目录。Linux 每个用户都有一个主目录,以账号名命名。
- /root :系统管理员目录,超级权限者目录。
- /boot :启动 Linux 核心文件,包括连接文件和镜像文件。
- /media :存放外设连接文件。
- /mnt :外部存储设备接入,外部设备的文件会出现在这里。
- /usr/local :存放通过编译源码方式安装的新程序。/opt 也是。
- /var :存放不断扩展的文件。可以将日志等文件放在这里。
9. Linux 开机关机及重启
Linux 开机关机及重启指令包括:
- shutdown:关机指令。
- shutdown -h now:现在关机。
- shutdown -h 1:一分钟后关机。
- shutdown -r now:现在重启。
- halt:关机指令。
- reboot:重启指令。
- sync:内存数据同步到磁盘中。对于关机和重启,都应该先 sync 操作。
10. Vim 快捷键
Vim 快捷键包括:
- yy:拷贝当前行。5yy:拷贝前5行。
- dd:删除当前行。5dd:删除前5行。
- p:粘贴。
- /关键字:查找关键字。
- :set nu:显示行号。
- :set nonu:不显示行号。
- G:切换到最末行。
- gg:切换到首行。
- u:撤回操作。
- 20 + SHIFT + G:切换到第20行。
11. Linux 用户管理
Linux 系统是多用户多任务操作系统,任何用户要使用系统资源,都要先从系统管理员处申请一个账号。
11. 1 用户管理命令
用户管理命令包括:
- useradd [OPTION] 用户名:新建用户。
- -d 指定目录:给新创建的目录指定家目录。
- -g 用户组:新建用户时将用户加入到用户组。
- passwd 用户名:指定密码。
- userdel [OPTION] 用户名:删除用户。
- -r:删除用户和家目录。
- id 用户名:查询用户。
- su 用户名:切换用户。
- exit:返回原用户。
- groupadd 组名:增加用户组。同理,有 groupdel
- usermod -g 用户组 用户名:将用户修改到指定组。
11. 2 用户管理文件
用户管理文件包括:
- /etc/passwd:用户配置文件,记录用户各种信息。
- /etc/shadow:口令配置文件。
- /etc/group:组文件。
12. Linux 实用指令
Linux 有很多实用指令,包括:
12.1 通用指令
-
init 运行级别:切换运行级别。比如 5 是图形界面。
- 例如:如何找回 root 密码?
- 思路:切换到单用户模式 init 1,然后修改 root 密码
ls [OPTION] 目录或文件:显示内容。
- -a:显示所有文件,包括隐藏文件。
- -l:以列表形式显示信息。
12.2 增删改指令
-
mkdir [OPTION] 目录:创建目录。
- -p:一次性创建多级目录。
-
rm [OPTION] 文件或目录:删除文件或目录。
- -f:强制删除文件。
- -r:删除目录。常常 -rf 连起来用。
- touch 文件:创建空文件。
-
cp [OPTION] 源文件 目录:复制文件到目录中。
- -r:复制文件夹。
- mv 文件 文件:移动文件,或者重命名。
12.3 查看指令
-
cat [OPTION] 文件:查看文件内容,以只读方式打开。cat 文件 | more:分页显示。
- -n:显示行号。
-
more 文件:全屏按页显示文件。支持快捷键。
less 文件:比 more 更好的文件查看器。也支持快捷键。
head [OPTION] 文件:显示文件前面的内容。tail 命令同理。
- -n 数量A:显示文件前 A 行内容。
data [OPTION]:显示时间。
- date "+%Y-%m-%d %H:%M:%S":显示年月日时分秒。
- -s 字符串时间:设置时间。
12.4 查找指令
-
find [搜索范围] [OPTION]:查找内容。
- -name:查找指定文件名的文件。
- -user:查找指定用户的所有文件。
- -size:查找指定大小的文件。
-
locate 文件:在 locate 数据库中快速查找文件。必须先使用 updatedb 指令创建 locate 数据库。
-
grep [OPTION] 查找内容 源文件:过滤查找。
- -n:显示匹配的行及行号。
- -i:忽略字母大小写。
-
| :管道符,将前一个命令的处理结果传递给后面的命令处理。
-
grep 和 | 经常配合使用。例如,查找 hello.txt 文件中 yes 所在的行:
-
cat hello.txt | grep -n yes cat hello.txt | grep -ni yes
-
12.5 压缩指令
-
zip [OPTION] 压缩文件 源文件:压缩文件。
- -r:压缩目录。
-
unzip [OPTION] 文件:解压缩文件。
- -d 目录:指定文件解压后的存放目录。
-
tar [OPTION] 压缩文件 源文件:打包为 .tar.gz。
-
-
例如,将 /home/a1.txt 和 a2.txt 压缩为 a.tar.gz,将 a.tar.gz 再解压到 /opt:
-
tar -zcvf a.tar.gz a1.txt a2.txt tar -zxvf a.tar.gz /opt
-
13. Linux 组管理
Linux 需要对用户及对应组进行管理,这涉及到一系列命令,包括:
- chown 用户名 文件名:修改文件所有者。
- ls -l 可以查看文件及所有者。
- groupadd 组名:创建一个组。
- chgrp 组名 文件名:修改文件所在组。
- usermod -g 组名 用户名:修改用户组。
- usermod -d 目录名 用户名:修改用户登录的初始目录。
- chmod [OPTION] 文件目录名:变更权限。
- r:读权限,w:写权限,x:执行权限。
- u:所有者,g:所有组,o:其他人,a:所有人。
- 例子1:chmod o=r,g=rw temp.txt。
- 例子2:chmod a+r temp.txt。给所有人增加读权限。同理还有减号。
- 例子2:chmod 751 temp.txt。相当于 chmod u=rwx,g=rx,o=x temp.txt。r=4,w=2,x=1。
Linux 组管理实例:
14. Linux 任务调度管理
Linux 任务调度,常常使用 crontab。crontab 可以设定某个时间执行某个命令或脚本文件。
- crontab [OPTION]:定时执行某命令或脚本。
- -e:编辑任务。
- -l:查询任务。
- -r:删除当前用户所有 crontab 任务。
- service crond restart:重启任务调度。
设置 crontab 的方法如下:
-
设置任务调度文件:/etc/crontab。
-
编辑任务: crontab -e。
-
输入任务到调度文件。
-
任务设置语法:
任务调度案例包括:
-
案例一:每隔一分钟,将当前日期加入到 /tmp/mydate 文件。
-
touch /tmp/mydate chmod 744 /home/mytask1.sh crontab -e */**** /home/mytask1.sh
-
案例二:每天凌晨 2:00 将 MySQL 数据库 testdb 备份到 mydb.bak 文件。
-
touch /tmp/mydb.bak chmod 744 /home/mytask2.sh crontab -e 0 2 * * * /home/mytask2.sh
15. Linux 分区及挂载管理
Linux 涉及到分区、磁盘以及相关常用的指令。
15.1 分区指令
- lsblk [OPTION]:查看分区情况。
- -f:显示分区哈希值。
为 Linux 系统添加一块新硬盘,需要经历如下步骤:
-
添加硬盘。
-
对硬盘进行分区。fdisk 分区名。随后按照提示操作即可。
-
格式化。mkfs [OPTION] 分区名。
- -t 格式名:按照指定格式进行格式化。
-
挂载。mkdir 目录,为目录构建地址。随后挂载操作 mount 分区名。
-
设置可以自动挂载。编辑 /etc/fstab,修改后 mount -a。确保系统重启时,仍然保持挂载。
-
fdisk /dev/sdb mkfs -t ext4 /dev/sdb1 mkdir /home/newdisk mount /dev/sdb1 /home/newdisk vim /etc/fstab /dev/sdb1 /home/newdisk ext4 defaults 0 0 # 加入的内容 mount -a
15.2 磁盘指令
Linux 查看磁盘整体使用情况命令,包括:
- df [OPTION]:查看磁盘使用情况。
- -lh:查看所有分区及使用情况。一般都是用这个 df -lh。
- -h:带计量单位。一般用 du -h 目录。
- -a:含文件。
- --max-depth=1:子目录深度。
- -c:带汇总。
15.3 常用指令
Linux 磁盘操作最常用的指令,包括:
-
统计文件夹下文件的个数:
-
ls -l /home | grep "^-" | wc -l
-
-
统计文件夹下目录的个数:
-
ls -l /home | grep "^d" | wc -l
-
-
统计包括子文件夹的文件个数:
-
ls -lR /home | grep "^d" | wc -l
-
-
tree:树状显示目录结构。
16. Linux 进程管理
16.1 进程管理命令
进程管理常用命令,包括:
- ps [OPTION]:查看进程。一般是 ps -aux,或 ps -ef。
- -a:显示所有进程。
- -u:用户格式。
- -x:显示后台参数。
- -e:显示所有进程。
- -f:全格式。
- ps [OPTION]|grep 相关内容:查看是否有相关服务。
- ps 命令显示的部分属性包括:
- %CPU:占用 CPU 百分比。
- %MEM:占用内存百分比。
- VSZ:占用虚拟内存大小(KB)。
- RSS:占用物理内存大小(KB)。
- TT:终端名称。
- STAT:进程状态。S:睡眠。s:先导进程。N:低优先级。R:正在运行。D:等待。Z:阻塞。T:跟踪或停止。
- STARTED:启动时间。
- TIME:持续时间。
- kill [OPTION] 进程号:杀死进程。
- -9:强制立即停止。
- killall [OPTION] 进程号:杀死所有符合的进程。
- pstree [OPTION]:更直观显示进程。
- -p:显示进程号。
- -u:显示进程所属用户。
- top [OPTION]:查看进程,可以更新显示。
- -d 秒数:每隔几秒更新。
- -i:不显示停止或阻塞进程。
- -p 进程号:查看指定进程。
- k:杀死指定进程。
16.2 服务管理命令
服务,本质是进程,但是是运行在后台的,通过监听某个端口,等待其他程序请求,因此又叫守护进程
。
服务管理常用的命令,包括:
-
service 服务名 [start | stop | restart | reload | status]:管理服务。
- 部分系统使用的不是 service 关键字,而是 systemctl。
-
ls -l /etc/init.d/:查看所有服务名称。
-
netstat [OPTION]:查看系统网络服务。
-
-an:按顺序排列输出。
-
-p:显示调用服务的进程。
-
例子:查看系统所有网络服务:
-
netstat -anp | more
-
例子:查看服务名为 sshd 的服务的信息:
-
netstat -anp | grep sshd
-
-
chkconfig [OPTION]:查看并设置服务运行级别。
-
服务运行级别:
-
17. Linux Shell 编程
17.1 Shell 介绍
Shell 是一个命令行解释器,为用户提供了一个向 Linux 内核发送请求运行程序的界面系统。
Shell 可以启动、挂起、停止、编写程序。
17.2 Shell 脚本
Shell 脚本的要求包括:
- 脚本以
#!/bin/bash
开头。 - 脚本需要提供可执行权限。
脚本常用执行流程包括:
- chmod 744 脚本名称:提供所有者执行权限。
- 脚本路径:执行脚本。
另一种脚本执行流程,不推荐使用:
- sh 脚本路径:直接执行脚本。不提供执行权限。
17.3 Shell 变量
Shell 变量的内容包括:
-
Shell 变量包括:
- 系统变量。$HOME, $PWD, $SHELL, $USER 等。
- 用户自定义变量。
-
变量 = 值:定义变量。
-
unset 变量:撤销变量。
- readonly 变量:声明静态变量。
-
命令返回值赋值:有两种方法实现将命令的返回值赋给变量,包括:
-
反引号命令赋值。
-
$() 命令赋值。
-
A =
ls -la
A = $(ls -la)
-
-
export 变量:设置环境变量。
-
source 配置文件:生效配置信息。
-
echo $变量:查询环境变量值。
17.4 Shell 参数变量
Shell 脚本可以定制参数信息,包括:
- $n:第 n 个参数。
- $*:所有参数。
- $@:所有参数。
- $#:所有参数的个数。
- $$:当前进程号。
- $!:最后一个进程号。
- $?:最后一次命令的返回状态。可以用于判断是否上个命令正确执行,正确则为 0,否则不正确。
17.5 Shell 算数运算
Shell 脚本可以执行算数运算,包括:
- $[运算式]:执行运算。
- $((运算式)):执行运算。
- expr 运算式:执行运算。
17.6 Shell 条件判断
Shell 脚本执行条件判断的命令,包括:
- [ 条件 ]:条件判断。注意,条件前后要有空格。
- 条件成立则返回 true,可以用 $? 验证,为 0 则为 true,否则为 false。
- -lt:小于。
- -le:小于等于。
- -eq:等于。
- -gt:大于。
- -ge:大于等于。
- -ne:不等于。
- -r:有读权限。同样的有 -x、-w。
- -f:文件存在,且是常规文件。
- -e:文件存在。
- -d:文件存在,且是一个目录。
实例:
if [ 23 -gt 22 ]
then
echo "大于"
fi
17.7 Shell 流程判断
Shell 流程判断语法包括:
-
if [ 条件 ] then 内容 elif [ 条件 ] then 内容 fi
-
case $变量名 in "值1") 内容 ;; "值2") 内容 ;; *) 内容 ;; esac
-
for 变量 in "值" do 内容 done for ((初始值;循环控制条件;变量变化)) do 内容 done
-
while [ 条件 ] do 内容 done
17.8 Shell 控制台读取输入
Shell 从控制台读取输入命令包括:
- read [OPTION] [参数]:控制台读取参数。
- -p:指定读取时的提示符。
- -t:指定读取等待时间。
- 参数:指定读取值的变量名。
17.9 Shell 函数
Shell 和其他语言一样,也可以编写函数。系统函数包括:
- basename 文件地址 [后缀]:返回文件名。指定后缀后可以去除后缀。
- dirname 文件地址:返回文件名前面的目录。
自定义函数:
-
语法:
-
[ function ] funcname[()] { 内容; [return int;] }
-
调用:
-
funcname [值]
18. Vim 下复制粘贴
vim 下复制可以使用:
:set mouse=c
19. Vim 撤回和恢复
可以命名模式下通过 u 实现退回。
可以 CTRL + R 实现恢复。
20. Bash 快速操作
有时 Bash
输入栏里有太多内容,而我们想对内容进行快速处理,或者快速移动光标,或者查看历史命令,这时就可以使用这些技巧了。
# 光标移动到行首
CTRL + A
# 光标移动到页尾
CTRL + E
# 删除光标前的文字
CTRL + U
# 删除光标后的文字
CTRL + K
# 搜索历史命令
CTRL + R
参考内容
- [linux 命令行 光标移动技巧等](
Comments | 1 条评论
牛批!!!