Linux相关命令行学习

Linux相关命令行学习

命令参数基本形式

command parameters
  • command 指的是要使用的命令名称
  • parameters 参数列表

短参数:

-符号后面加上一个字母,且区分大小写

command -a

当然可以添加多个短参数

command -a -b -c -d

初次之外,甚至可以将短参数连在一起

command -abcd

举个🌰:

# 列出当前工作目录下的所有文件
ls -a
# 除了列出所有意外,还列表显示详细信息
ls -la

长参数:

--后面添加一个英语单词,或多个字母

command --apple

但是如果存在多个长参数,则不能像短参数那样写在一起,必须分开

command -apple --car --cat

除此意外,短参数还能和长参数混合使用:

ls -l --all

参数传值

有些参数必须要赋值才行,赋值的话也很简单

短参数赋值,直接在后面追加值即可:

command -a 666

而长参数,则需要添加 = 来赋值:

command --all=666

可以看到,短参数方便,但不好直观看出参数的作用,而长参数比较繁琐,但可以直接看出参数的作用

其它参数

有些命令可能会有自身规定的其它参数形式,这时候就要查询帮助文档了

小结

  1. 命令可直接使用,也可带上参数,用于指定选项
  2. 参数有- + 单个字母 或者 -- + 多个字母的形式
  3. 特殊的命令还会有自身特殊的参数给定形式

基本命令操作

获取命令

补全一个命令

命令前几个字母 + tab键 可以尝试查找补全想输入的命令
如果待选择的命令过多,还会提示是否全部展示:
是否展示全部
此时输入 y 可以展示所有待命令。
除了补全命令意外,使用tab键 还可以补全当前目录下的文件名称

查找以前输入的命令

方法1:
使用方向键的 ,快速的切换到上一个/下一个命令
简单方便,但是不适合查找很久前输入过的问题

方法2
使用快捷键 control + r 转换到查找命令的功能下,输入直接输入过的命令中存在的字母,则会自动补全

自动补全历史命令
方法3
使用 history 命令,可以列出之前所有输入过的命令,并且携带编号

要快速的调用输入过的命令时候,使用 ! + 编号即可

常见快捷键

在终端:

快捷键作用
ctrl + l清空屏幕
ctrl + d传递EOF结束符号
shift + pageUp向上滚屏
shift + pageDo向下滚屏

编辑命令时:

快捷键作用
ctrl + a光标跳到当前行开头
ctrl + e光标跳到当前行的结尾
ctrl + u删除所有光标左边的字符
ctrl + k删除所有光标右边的字符
ctrl + w删除光标左边的一个单词
ctrl + y粘贴用上面命令删除的字符串

文件相关操作

linux文件组织结构:

在linux下,一切皆为文件

有个叫根目录 /的目录,这个目录包含了所有其他的文件和目录

目录名说明
bin存放用户的可执行文件
boot和linux启动相关的文件
dev存放设备文件,目录中每个文件对应一个设备
etc法语(et cetera) 放一些零零散散的文件,比如配置文件
home用户的私人目录
lib存放程序运行时所需库文件 .so文件
media通过media的子目录来访问外设中的内容,比如U盘,DVD
mntmount挂载缩写,用于临时挂载一些装置
optoptional application software package可选的应用软件包,安装的第三方插件
root超级用户root的主目录,其他用户位于/home
sbinsystem binary系统二进制文件,系统级重要的可执行文件
srvservice服务,包含一些网络服务启动之后所需要取用的数据
tmp临时存放文件的地方
usrUnix Software ResourceUnix 操作系统软件资源,非常大,存放了大部分用户可调用的程序
varvariable可变的,存放一些动态的数据,比如说日志
pwd & which

pwd : print working directory 打印当前工作目录名称

pwd
# /home/mao

which
用于获取命令的可执行文件的位置

比如说想获取pwd命令文件的位置:

which pwd
# 打印 /bin/pwd

获取自身的位置:

which which
# 打印 /usr/bin/which
ls & cd & du

ls : list,列出当前工作目录下的文件和文件夹

一般列出来以后,根据类型的不同,颜色也不同

ls

ls颜色
如果发现使用ls并没有显示颜色,可以添加参数来显示:

ls --color=auto

初次之外,ls还可以有其它很多参数

参数作用
-a显示所有的文件,包括隐藏文件
-l以列表的形式显示,并且显示很多详细信息
-hhuman-readable将使用合适的单位进行显示
-ttime 按文件最近一次修改时间排序

cd : change directory改变当前的工作目录,后面接要切换到的目录。支持绝对路径和相对路径

cd /usr
cd app/libs
  • cd .. : 切换到父目录
  • cd ~ : 切换到当前用户的家目录
  • cd : 同上
  • cd / : 切换到根目录

du : disk usage 获取文件和目录所占的空间大小。

du

du
不过这样不方便查看,可以使用-h参数,使用合适的单位展示:

du -h

du -h
默认情况下,du 命令只显示目录的大小,如果还要显示文件的大小,需要使用 -a 参数

如果只想知道当前目录的总大小,则可以使用 -s 参数,只输出总大小,不输出子目录的信息

cat & less

cat : concatenate 一次性显示文件的所有内容

cat xxx.py
# 终端输出xxx.py中的内容

由于是直接全部显示在终端中,所以cat命令只适合小文件。

如果想在展示文件内容的时候加上行号,可以使用 -n 参数


less : 分页显示文件中的内容

less 命令会分一页一页的显示文件内容,使我们可以方便的在终端里阅读。

less test.py

less 会读入文件开始的若干行,至于具体几行,就看屏幕的高度了,这样就能慢慢的往后继续读

当然,需要用户自己去翻页,于是又有了一些快捷键:

按键作用
空格下一页
b上一页
d下半页
u上半页
回车下一行
y上一行
q退出less命令
=显示当前所在位置 包括行数 以访问占比
h打开帮助文档 使用 q 离开
/进入搜索模式,开始搜索
head & tail

head : 显示文件开头的几行

默认会显示文件的头10

head xxx.py

当然也可以使用 -n 参数来控制到底显示最开始的多少行

head -n 20 xxx.py

tail : 显示文件尾部几行,默认为10行

也可使用 -n 来指定到底显示多少行

除此之外,还可以使用 -f 参数来实时追踪文件的更新内容:

tail -n 5 xxx.py

如果 xxx.py 文件尾部有追加新的内容,则可以里面查看到。

默认 tail -f 会每隔 1s 检查一次文件是否有新的内容 也可以自己设置刷新间隔时间:

# 每隔2s检查一次
tail -n 5 -s 2 xxx.py
touch & mkdir

touch : 创建一个空白文件

# 创建一个名为 a.py 的文件
touch a.py

# 当然可以联系创建
touch a.py b.py

# 如果名字中有空格,则需要加上 ""
touch "a b.py"

mkdir : make directory 创建一个目录

用法和 touch 类似,可以创建单个目录,也可连续创建目录,目录名也可有空格

除此之外,使用 -p 参数还可以递归的进行创建文件夹

mkdir a/b/c

先创建a再创建b再创建c

cp & mv & rm

cp : copy 拷贝一个文件/目录

# 拷贝a.py文件 并将名称设置为b.py
cp a.py b.py

# 将 a.py文件复制到 www 文件夹中
cp a.py www/

# 将 a.py文件复制到 www 文件夹中 并重命名为b.py
cp a.py www/b.py

如果需要拷贝目录则要加上 -r 参数

cp -r www/ qqq/

不仅如此,cp还支持通配符 *

# 将所有的py文件拷贝到www文件夹中
cp *.py www/

mv : move 移动/重命名 文件/文件夹

# 将a.py文件重命名为b.py
mv a.py b.py

# 将a.py文件移动到www文件夹下
mv a.py www/

# 当然也支持通配符
mv *.py www/

rm : remove删除文件和目录

该命令需要谨慎使用

# 直接删除a.py文件
rm a.py

# 连续删除多个文件
rm a.py b.py c.py
  • 使用 -f (force) 参数时,不会询问是否删除,强制删除
  • 使用 -r (recursive) 递归的删除其包含的子目录和文件
  • 如果将 -rf 组合在一起使用,会非常危险
ln

ln : link 链接,用于创建文件/文件夹的链接

linux下有软链接硬链接两种链接

  • 硬链接 : 直接指向被创建文件的innode所标识的内容
  • 软链接 : 指向目标文件的文件名,而不是文件内容

因此,如果ba 的硬链接,必须将 a和b 全部删除,才能保证内容被删除

而如果 ba 的软链接,删除 a 以后,内容就可被删除,而 b 由于所指向的文件不见了,则变成了 死链接

初次之外,只有软链接可以指向目录,硬链接不行

# 创建a的硬链接
ln a b

# 创建a的软链接
ln -s a b

权限相关

在 linux 中可以创建许多的用户,且被划分在不同的群组当中

而用户中,有个root,有权利做任意事情

sudo

sudo : substitute user do 成为root用户进行命令执行

# 暂时成为root用户
sudo whoami
# root

# 一直成为root
# 输入 ctrl + d 就可以退出root
sudo su
用户管理相关

adduser : 添加一个新用户,必须以root来添加

adduser mao
# Adding user `mao' ...
# Adding new group `mao' (1000) ...
# Adding new user `mao' (1000) with group `mao' ...
# Creating home directory `/home/mao' ...
# Copying files from `/etc/skel' ...
# Enter new UNIX password:

# 接下来输入密码即可

passwd : 修改一个用户的密码

passwd mao
# Enter new UNIX password:
# Retype new UNIX password:
# passwd: password updated successfully

deluser : 删除一个用户

deluser mao
# Removing user `mao' ...
# Warning: group `mao' has no more members.
# Done.

删除的时候不会重复确认,慎用

删除用户的时候,如果要删除用户的家目录,可以加上 --remove-home参数,否则得手动删除

deluser --remove-home thomas
群组管理

如果添加一个用户 mao ,且还没有为其设置所属组,那么会自动创建一个同名的组,并将其放入该组中

addgroup : 创建新的组

addgroup student
# Adding group `student' (GID 1000) ...
# Done.

usermod :user modify 用于修改用户的参数

使用 -g 参数可以修改组

# 将用户 mao 的组修改为 student
usermod -g student mao

并且可以通过 -G 参数一次添加到多个组中:

usermod -G a,b mao

-G 会把用户从原先的群组中剔除,如果想追加,则需要添加 -a 参数

usermod -aG c mao

追加群组的时候,一定要用大写的 -G 这个参数,不能用小写的 -g 这个参数

groups : 查询用户所属组
当用户组被修改以后,可以通过该命令查看一下是否修改成功

groups mao
# student

# 不加参数的话,则会显示当前用户所属群
groups

当然一个用户也可以属于多个组

delgroup : 删除群

# 后面直接添加群名即可
delgroup c
# Removing group `c' ...
# Done.
文件权限管理

chown : change owner 修改文件的所属者
chgrp : change group 修改文件所属的组

可以将文件的所属者给修改:
chown + 用户 + 文件

# 将 t.py 文件的所属者修改为mao
chown mao t.py

chgrp 用法类似:

chgrp mao t.py

chown 除了可以修改所属用于以外,也可以修改所属:

# : 分隔用户和组
chown mao:mao a.py

添加 -R 参数,可以递归的修改文件夹中所有文件和文件夹的所属用户

# : 分隔用户和组
chown -R mao:mao www/

chmod : 修改文件的访问权限

每一个文件都会有一系列的权限属性,标志了哪些用户有哪些操作的权限

一个用户对于一个文件的操作来说,一共有三种操作 : 执行

使用命令 ls -l 可以查看当前工作目录下的文件,各种用户都拥有哪些权限:

ls -l
第一列的字母就是描述了文件权限相关的信息:

字母意义
d文件是一个目录
l文件是一个链接
r读权限
w写权限
x执行权限

如果一个 xd 上,则表示这个目录可以被切换进去,如果还有 r 的话,则表示可以查询到该目录的内容

第一列被划分为 10 个字符,有各自的含义

  • 1 : 表示该文件类型,普通、目录、链接
  • 2-4 : 表示文件拥有者的操作权限
  • 5-7 : 表示文件所属组拥有的操作权限
  • 8-10 : 表示其它用户所拥有的操作权限

对于每一类用户,用三个字符来表示三种不同权限的方式:

  • r-- : 只有读权限
  • -wx : 有写和执行的权限
  • r-x : 有读和执行的权限
  • 以此类推

修改权限:

数字法描述 : 将 rwx 分别标志位不同的数字,使得任意相加后不会重复

权限
r4
w2
x1

此时可以数字来方便的表示任意权限方案 :

方案
---0
r--4
rw-6
-wx3
rwx7

此时如果给一个 640 则表示:

  • 拥有者读,写权限
  • 所属组 权限
  • 其他用户 没有权限

此时就可以直接使用 chmod 命令来修改了:

# 给所有用户全部权限
chmod 777 a.py

字母分配法 : 使用权限用户的简写来相对的分配权限

符号意义
u文件所有者
g文件所属群组
o其他用户
a所有用户
+添加权限
-去除权限
=分配权限

任意搭配以后,就可以自由的分配权限了:

# 给所属用户 添加rx权限
chmod u+rx a.py

# 给所属组添加写 w权限
chmod g+w a.py

# 移除其他用户的执行权限
chmod o-x a.py

# 所有用户添加写权限
chmod +x a.py 

# 直接赋给权限
chmod u=rwx,g=r,o=- a.py

使用 -R 可以递归的修改子目录中文件权限

文件查找

locate & find

locate : 快速查找,用于定位要查找的文件

locate nohup.out
# /root/my-app/nohup.out
# /root/nohup.out
# /root/rude_interview/app/nohup.out

可能存在多个同名文件,找到后都会打印出来

但是,如果新建一个新的文件a.py以后,使用locate命令却无法查找到这个a.py文件。

这就是 locate 命令的缺点 : locate 命令不会直接对磁盘进行查找,而是在存储文件的数据库中进行查找,linux一般每天更新一次这个文件数据库,所以刚创建的文件无法被查询到。

可以使用 updatedb 来立即刷新文件数据库,这样就能查找到刚刚创建的文件了。


find : 深入查找,可以做很多事情

find 不会查找文件数据库,而是直接遍历硬盘,这样及时性好,但如果硬盘太大了,查找起来会比较

语法 : find "where" "what" "to do"
在哪查找什么,找到后怎么做

  • where : 指定从哪个目录进行查找,子目录也会继续进行。默认下在当前工作目录下查找
  • what : 查找什么。比如查找名字 大小 访问时间,必须的
  • find : 找到以后,进行的后续处理,如果没有则不会做其它事情

根据文件名查找

find -name a.py
# ./gittest/a.py
# ./a.py
# 如果没有输出,则表示a.py没有查找到
find /var/log -name "syslog"
# /var/log/installer/syslog
# /var/log/syslog

当然所搜的关键字也可以带上通配符 *

根据文件大小查找

# 查找大于100m的文件
find / -size +100M

# 查找小于100k的文件
find /var -size -100k

# k M G

根据访问时间查找
-atime: access time

# 查找7天之内访问过的py文件
find -name "*.py" -atime -7

仅查找目录或文件

使用-type 参数即可 d 为目录 f 普通文件。默认全部查找出来

# 只查找名为 kkk 的目录
 find / -name "kkk" -type d

数据流

数据处理

grep : 过滤数据并打印

基本用法:

# 在 a.py 文件中搜索 func 这个文本
grep func a.py

# 如果要搜索的文本中存在 空格 则需要 “”
grep "hello mao" a.py

grep相关参数:

参数作用
-i忽略大小写
-n显示结果所在行号
-v取反,只要不存在的行
-r递归在文件夹中进行查找
-E使用正则表达式进行查找

sort : 对文件进行排序操作

有这么一个文本文件 nums.txt:

c
b
a
d
o
k
# 执行后
sort nums.txt
a
b
c
d
k
o

默认状态下按照首字母ascii码进行排序,当然还有其它参数可选:

参数作用
-o将排序后的内容写入新文件中
-r逆向排序
-R随机排序
-n对数字排序

wc : word count 统计单词数量、行数等等

wc test.py
#       22      46     439 test.py

返回一个四元组:

  • 22 : 行数,换行符的数量
  • 46 : 单词数
  • 439 : 字节数 n 8bit
  • test.py : 被统计的文件名
# 只要行数
wc -l test.py

# 只要单词数
wc -w test.py

# 只要字符数
wc -c test.py

# 只统计字符数 ? 为什么是 m?
wc -m test.py

uniq : 删除文件文件中的重复内容

uniq nums.txt

如果要将结果保存在新的文件中:

uniq nums.txt a.txt

初次之外,还有些好用的参数:

# 除了去重以外,还显示原始出现个数
uniq -c nums.txt

# 只保留重复的项
uniq -d nums.txt

cut : 剪切文件的一部分内容,用于对文件的每一行进行剪切处理

# 每一行保留第2到第4个字符
cut -c 2-4 name.txt

流 & 输出重定向

  • 重定向 : 将本来要显示在终端上的数据,传输到其它的地方,比如文件,下一步命令的输入
  • 管道 : 将两个命令连接起来,一个命令的输入作为另外一个命令的输入,构成了管道
重定向到文件

> : 重定向到新的文件

ls > q.txt

此时会创建一个名为 q.txt 的文件,并吧 ls 本身要输出的内容写入该文件中。
但是如果 q.txt 已经存在的话,则会将老的文件覆盖

如果不想在终端显示也不想写入文件中,可以重定向到一个空文件/dev/null

ls -l > /dev/null

>> : 重定向到文件尾部
如果指定文件不存在,则创建并写入。如果存在,则添加到文件的末尾

ls >> q.txt

重定向错误输出:

输出分为两种 标准输出文件描述符1标准错误输出文件描述符2

上面的 >>> 都是重定向标准输出的操作,并不能将标准错误输出重定向

必须使用 2> 来将标准错误输出重定向
同理 2>> 就是将标准错误输出追加

# 正常的话,输出到q.txt 错误信息输出到error.log
ls aaaa > q.txt 2>> error.log

如果想要标准输出标准错误输出都在一个文件,可以在最后使用使用 2>&1即可

cat a.py > res.txt 2>&1
cat a.py >> res.txt 2>&1

小结

  • 2> :将标准错误输出重定向
  • 2>> :将标准错误输出追加重定向
  • 2>&1 :将标准输出和标准错误输出重定向到同一个地方
输入重定向 & 管道

上面可以操作数据去哪里,这里就是决定命令的输入从哪里来

< : 从文件中读取

# 普通显示一个文件内容
# 给 cat 传的只是 `a.py` 这个文件名
# 之后 cat 命令先打开这个文件,再读取数据,再显示
cat a.py

# 从 a.py 中获取内容给cat
# cat 接收到的是a.py中的内容
# 而负责打开文件的操作则是交给了shell命令去做的
cat < a.py

结果是一样,但是过程不同


<< : 将键盘上的输入重定向到某个命令的输入中去

sort -n << END
# > 5
# > 4
# > 6
# > 9
# > 3 

<< 右侧的是结束符,当输入为 END 时,表示数据输入完成。结束符可以自己定义

也可以和之前的结合起来

sort -n << END > res.txt 2>&1

| : 管道符,用于建立管道,将前一个命令的 结果 转交给后一个命令的输入

# 从运行的进程中 查找带有python字符串的行
ps -ef | grep python

# 按照文件夹的名字排序显示
ls | sort

# 显示文件大小最大的10条
du | sort -nr | head

linux进程

监视系统进程

w : 显示系统中目前有哪些用户登录,以及在干什么

w
18:50:29 up 17 days,  3:45,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    42.49.xxx.x      18:50    2.00s  0.01s  0.00s w

第一行和 uptime 命令输出一样 有 当前时间 运行时间 负载信息

其中负载

load average: 0.00, 0.00, 0.00

三个数字分别表示:

  • 1 分钟以内的平均负载
  • 5 分钟之内的平均负载
  • 15 分钟之内的平均负载

表示一段时间内的平均活跃进程数,就是使用了CPU的进程数量

是否超载要根据机器的核数平均负载来综合确定

比如说单核处理器超过 1 就表示超载了,双核超过 2 才算超载以此类推…

其余行和 who 命令类似,展示当前登录的所有用户信息


ps : process status : 用于显示当前系统中的进程

不过只是显示执行的那一瞬间的状态

 PID TTY          TIME CMD
21160 pts/0    00:00:00 bash
21461 pts/0    00:00:00 ps
说明
PID进程ID
TTY进程所运行的终端
TIME进程运行了多久
CMD产生这个进程的程序名

ps 不加其它的参数的时候,只会列出当前运行 ps 命令的用户在当前这个终端中所运行的进程,并且虽然也是当前用户运行的,但不是在当前的终端里,因此也没列出来。

参数 : -ef 可以列出所有的进程

ps -ef

UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Jun25 ?        00:00:25 /lib/systemd/systemd --system --deserialize 24
root         2     0  0 Jun25 ?        00:00:00 [kthreadd]
root         3     2  0 Jun25 ?        00:00:24 [ksoftirqd/0]

还多了一些列:

说明
UID用户标志符
PPID进程的父进程号

参数 -efH : 按照乔木状列出进程

root     31989     1  0 Jul08 ?        00:00:16   /usr/sbin/sshd -D
root     21086 31989  0 07:42 ?        00:00:00     sshd: root@pts/0
root     21160 21086  0 07:42 pts/0    00:00:00       -bash
root     23240 21160  0 07:57 pts/0    00:00:00         ps -efH

参数 -u : 列出此用户运行的进程:

ps -u
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      1191  0.0  0.1  14316   896 ttyS0    Ss+  Jun25   0:00 /sbin/agetty --keep-baud 115200,38400
root      1192  0.0  0.0  14540   732 tty1     Ss+  Jun25   0:00 /sbin/agetty --noclear tty1 linux
root     23530  0.0  0.5  21172  4924 pts/0    Ss   07:59   0:00 -bash
root     23651  0.0  0.3  38308  3256 pts/0    R+   08:00   0:00 ps -u

参数 : -aux 通过 CPU 和内存使用来查看进程

# 默认的无序的
ps -aux

# cpu降序排列
ps -aux --sort -pcpu | less
# 内存占用降序排列
ps -aux --sort -pcpu | less
# 也可以两种一起排序
ps -aux --sort -pcpu,+pmem | less

pstree : 以树形的方式显示进程:

systemd─┬─YDLive───{YDLive}
        ├─YDService───9*[{YDService}]
        ├─acpid
        ├─2*[agetty]
        ├─barad_agent─┬─barad_agent
        │             └─barad_agent───3*[{barad_agent}]

进程操作

top : 展示进程动态列表

ps 命令作用很多,但是只能获取到某一时刻的状态,使用 top 就可以实时的监测进程状态了

top

不过 top 命令获取的进程数要比 ps 要少一些,因为只显示排在前面的一些进程,为了正好占用一个屏幕的大小。

默认按照占用 cpu 比例从大到小排列的。初次之外,top 命令还可交互

快捷键 :

按键作用
q退出
h显示帮助界面 q 退出
B加粗一些数据
f添加或删除某些列 q 退出
F改变进程列表排序所参照的列 q 退出
u依照用户来过滤显示。可以输入用户名,按回车
k结束某个进程 输入 PID
s修改刷新时间 默认 3s

ctrl + c : 强行终止当前正在运行的进程
kill : 结束指定的进程,通过PID杀死进程

# 结束 PID=9876的进程
kill 9876

# 当然也可连续结束
kill 9876 5432 1234

使用 -9 参数可以强制结束指定进程

kill -9 9876

killall : 可以通过 程序名 来结束进程

kill python

halt & reboot : 关机和重启

# 需要管理员权限才能关机
halt
poweroff

# 同样需要管理员权限
reboot

前后台进程

前台程序 : 默认情况下,用户创建的进程都在前台,前台程序从键盘读取数据,将输出显示在终端上。

后台程序 : 不必等待程序运行结束就可以输入其他命令

& : 在后台运行程序

find / mao > test.txt 2>&1 &

# [1] 13420
  • [1] : 是该终端后台进程的编号
  • 13420 : 进程号 PID ,如果想结束 可以使用 kill 13420

nohup : no hangup 让进程和终端分离开来

仅仅使用 & 的话,后台进程还是和终端相关的,当终端退出时,该进程也退出了。如果想终端退出,进程还是继续运行,则需要 nohup 命令。

可以看看 nohuup 的说明:

man nohup
run a command immune to hangups, with output to a non-tty

运行的进程不受 hangup 信号影响

nohup cat a.py
# nohup: ignoring input and appending output to 'nohup.out'

忽略输入,并且输出到 nohup.out文件中

如果想结束运行的进程,则可以先通过 ps -ef | grep command 来查找到该进程的 PID 再使用 kill 命令关闭。

一般会把 nohup& 一起使用


ctrl + z : 转到后台,并暂停运行

如果忘记了添加 & 的时候,就可以使用该快捷键了

# 查看进程相关信息
top

此时按下 ctrl + z:

[1]+  Stopped                 top

此时 top 进程就被放在后台,并且变为 停止 状态,然后就可以输入其它命令了


bg : 将命令转入后台运行。假如命令已经在后台,并且暂停着,那么 bg 命令会将其状态改为运行

  • 如果不添加任何参数,则作用于最近的一个后台进程
  • 如果后面加 %1,%2 这样的参数, (可不要 %),则作用于指定标号的进程
bg
# [1]+ top &

bg 命令会把在后台暂停的进程重新唤醒,使之在后台重新运行。

注意:

  • 使用普通命令 grep 这种, bg 是起作用的,转为后台运行
  • top 这种交互的命令不能再后台运行

一般需要先 ctrl + z 将进程暂停了,才能输入 bg 在后台运行进程


fg : foreground 将后台进程转换到后台运行

用法和 bg 类似,不加参数,作用于最近的一个后台进程 如果加参数则作用指定的

前台后台

定时 & 延时

文件解压缩

压缩文件有很多种比如说 7z rar zip tar 等等

  • 打包 : 将多个文件变成一个总的文件集合(archive)
  • 压缩 : 将一个大的文件,通过某种算法使得占用的存储空间变小

tar : 将多个文件打包归档

打包:

# 将文件夹 advance 中的文件打包,命名为 test.tar
tar -cvf test.tar advance/

# 也可以把多个文件放入
tar -cvf k.tar a.py b.py c.py

# 追加文件进入归档中
tar -rvf k.tar d.txt

查看:

# 查看归档中的文件
tar -tf test.tar

解文档:

# 和创建文档相反
tar -xvf k.tar

参数列表:

参数意义
-ccreate 创建新的归档
-vverbose 显示操作细节
-ffile 指定归档文件
-tlist 查看内容
-xextract 额外添加

gzip & bzip2 : 压缩归档

  • gzip : 后缀名为 .tar.gz
  • bzip2 : 后缀名为 .tar.bz2

gzip使用:

# 将 k.tar 压缩
gzip k.tar

# 解压
gunzip k.tar.gz

bzip2使用

# 压缩
bzip2 k.tar

# 解压
bunzip2 k.tar.bz2

使用 tar 同时归档+压缩 :

使用gunzip压缩

tar -zcvf k.tar.gz www/

使用 bzip2 压缩

tar -jcvf k.tar.bz2 www/

SSH使用

ssh 默认使用的是22端口

# 使用root名称进行远程登录
ssh root@139.xx.xx.x
# 如果不指定登录用户名,则使用当前机器登录的用户名名称
ssh 139.xx.xx.x
# 指定 23 为链接端口
ssh -p 23 139.xx.xx.x

网络相关

文件传输

wget
wget -参数 地址

直接会下载地址所指向的内容,如果需要停止,则使用 ctrl + c

下载时候,也会出现下载的 进度

具有很强的适用性,可以在不稳定网络中有出色的表现。如果出现了下载失败的问题,它还会再次连接到服务器,从停止的地方继续下载。

# 继续下载
wget -c xxxxx
# c : continue
scp

secure copy 网络当中进行拷贝操作:

可以将文件从一台电脑拷贝到另外一台去,并且拷贝的信息是安全的。

scp 源文件 目标文件

然后源文件目标文件都可以这样表示:

username@ip:file_path
  • username : 登录名
  • ip : 远程服务器的地址
  • file_path : 文件所在的路径

从当前电脑中的文件拷贝到远程电脑:

-P 指定端口 注意是大写的 P ,而ssh是小写的p

scp -P 12345 xxx.jpg mao@xx.xxx.xx.x:/home/mao/images/
sftp

文件传输协议

连接到 ftp 服务器:

# ftp://speedtest.tele2.net/表示ftp服务器的地址
# -p 表示被动的
# -oPort 指定端口
sftp -oPort 4321 mao@speedtest.tele2.net

一旦输入用户名和密码,连接上之后,其它操作和 ftp 是一样的

可以使用简单的命令行:

ls,cd,pwd

文件的传输:

  • put : 用于上传文件
  • get : 用于下载文件

如果想运行本机电脑的命令,可在命令前加上! 比如 !s

断开则使用 ctrl + D快捷键

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值