实时更新,  操作系统

Linux常用命令整理

本文于2020年5月13日由AlvinCR更新

 

本文是记录在实际中用到的重要命令 及使用心得,将会不断更新,用到什么就记录什么。

文章导引

1.后台相关

1.1 ps(查看当前的所有进程)或jobs(查看当前终端后台运行的任务)

ps全称:Process Status 进程状态

ps -aux | grep “test.sh” #a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序,不以终端机来区分
jobs -l选项可显示当前终端所有任务的PID,jobs的状态可以是running,stopped,Terminated。+ 号表示当前任务,- 号表示后一个任务。
在这里插入图片描述

1.2 kill(结束进程)

(1)通过jobs命令查看jobnum,然后执行 kill %jobnum(如kill %101471)
(2)通过ps命令查看进程号PID,然后执行 kill %PID(如kill %101471)
(3)如果是前台进程的话,直接执行 Ctrl+c 就可以终止了

1.3 前后台进程的切换与控制

(1)fg命令

功能:将后台中的命令调至前台继续运行
如果后台中有多个命令,可以先用jobs查看jobnun,然后用 fg %jobnum 将选中的命令调出。

(2)Ctrl + z 命令

功能:将一个正在前台执行的命令放到后台,并且处于暂停状态

(3)bg命令

功能:将一个在后台暂停的命令,变成在后台继续执行

在这里插入图片描述

1.4 &(实现后台运行)

当在前台运行某个作业时,终端被该作业占据;可以在命令后面加上& 实现后台运行。例如:sh test.sh &
适合在后台运行的命令有f i n d、费时的排序及一些s h e l l脚本。在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:

command > out.file 2>&1 &

这样,所有的标准输出和错误输出都将被重定向到一个叫做out.file 的文件中。2>&1 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了out.file文件,即将标准出错也输出到out.file文件中。最后一个&, 是让该命令在后台执行。2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出.
**注:
这里的command指的是自己任意的命令,而非直接使用command,例如./runme.sh > runme_out.file 2>&1 &

在这里插入图片描述

1.5 nohup

使用&命令后,作业被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户时),作业就会停止运行。nohup命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。该命令的一般形式为:nohup command &如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:

nohup command > myout.

file 2>&1 &

在这里插入图片描述
注意:使用了nohup之后,有可能在当前账户非正常退出或者结束的时候,命令还是自己结束了。所以在使用nohup命令后台运行命令之后,需要使用exit正常退出当前账户,这样才能保证命令一直在后台运行。

补充:
引用:https://blog.csdn.net/qq_43778308/article/details/103553225
还在这次连接窗口下,你用 ps -l就能查到这个后台进程的进程号比如15411;
当然 ps -a top -p 15411 也都能查到。
这时候你如果把会话连接断了重新连接;

1.网上很多博客说 jobs配合nohup 查看后台进程;输入jobs命令,很可能啥也没有。。。这是为什么? 答案就是:
jobs只能查看当前xshell连接服务器窗口创建的任务。由于在这个新连接下我并没有用nohup启动后台任务,所以就不会有显示
2.ps -l 和 ps -a 这个时候也找不到你要查的这个后台进程,(这里有疑问)
3.top -p 15411 或者ps aux命令 可以查到。 ps -ef | grep wz可以查看wz用户的所有进程

 

 

2 文件操作

2.1 cp(文件复制)

命令格式:

cp [-adfilprsu] 源文件(source) 目标文件(destination) cp [option] source1 source2 source3 … directory

-a:是指archive的意思,也说是指复制所有的目录
-d:若源文件为连接文件(link file),则复制连接文件属性而非文件本身
-f:强制(force),若有重复或其它疑问时,不会询问用户,而强制复制
-i:若目标文件(destination)已存在,在覆盖时会先询问是否真的操作
-l:建立硬连接(hard link)的连接文件,而非复制文件本身
-p:与文件的属性一起复制,而非使用默认属性
-r:递归复制,用于目录的复制操作
-s:复制成符号连接文件(symbolic link),即“快捷方式”文件
-u:若目标文件比源文件旧,更新目标文件

具体常用操作:

(1)强制复制文件ssr.sh为test.ssh

cp -f ssr.sh test.ssh

(2)将根目录ssr.sh复制到/test目录,并将文件名改为test.ssh

cp /ssr.sh /test/test.ssh

(3)将本目录下的ssr.sh复制到/test目录,并将文件名改为test.ssh

使用cp ./ssr.sh ./test/test.ssh与上面方法不一样,两者ssr.sh存放的位置不同,一个存放在根目录(绝对路径)下,一个存放在当前目录(相对路径)下。

(4)复制文件夹ssr.sh为test.ssh

cp -a test test1

如果不加-a 会出现cp: omitting directory ‘test’(忽略文件夹test)

备注:

1.如果复制的文件目录不存在会返回cp: cannot create regular file ‘./test/test.ssh’: No such file or directory

2.复制文件最好是到其文件本目录下,使用起来比较方便,当然也可以使用绝对路径(根目录)进行移动

(4)将上层目录下的ssr.sh复制到当前目录,并将文件名改为test.ssh

cp ../ssr.sh ./test.ssh

2.2 mv(文件移动,重命名)

命令格式:

mv [-fiv] source destination

-f:force,强制直接移动而不询问
-i:若目标文件(destination)已经存在,就会询问是否覆盖
-u:若目标文件已经存在,且源文件比较新,才会更新

具体常用操作:

(1)将根目录ssr.sh移动到/test目录,并将文件名改为test.ssh

mv /ssr.sh /test/test.ssh

(2)将本目录下的ssr.sh移动到/test目录,并将文件名改为test.ssh

mv ./ssr.sh ./test/test.ssh

(3)将上层目录下的ssr.sh移动到当前目录,并将文件名改为test.ssh

mv ../ssr.sh ./test.ssh

2.3 rm(文件删除)

命令格式:

rm [fir] 文件或目录

-f:强制删除
-i:交互模式,在删除前询问用户是否操作
-r:递归删除,常用在目录的删除

具体常用操作:

(1)强制删除当前目录下的/test目录中的test.ssh文件

rm -f ./test/test.ssh

(2)删除/test目录当前目录下的test.ssh文件,一般建议使用此命令而非强制删除

rm -i ./test/test.ssh

 

3 获取相关信息

3.1 ls和ll

3.2 pwd

3.3

 

4 文本操作

4.1 Vi(编辑文本)

(1)基本概念

vi的基本概念
  基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
    1) 命令行模式command mode)
  控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
    2) 插入模式(Insert mode)
  只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
    3) 底行模式(last line mode)
  将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
    不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。

(2)查找关键字

1.跳转成命令输入模式

2.输入斜杠“/”,这时屏幕会跳转到底部,输入栏出现”/”

3.输入你需要查找的关键字,回车

4.如果要继续查找关键字,输入n.

5.向前查找,输入N(大写)

(3)文本操作

1.跳到文本的最后一行:按“G”,即“shift+g”(个人备注:在未开启大写锁定时,按shift+任意字母,都将会变成大写)

2.跳到最后一行的最后一个字符 : 先重复1的操作即按“G”,之后按“$”键,即“shift+4”。

3.跳到第一行的第一个字符:先按两次“g”,

4.跳转到当前行的第一个字符:在当前行按“0”。

5.vi加密。进入vi,输入”:”  + “X” 之后就提示你输入两次密码。之后:wq 保存退出。再次进入时就提示你输入密码了。如果你不想要密码了,就:X 提示你输入密码时连续按两次回车。

 

补充:个人测试输入“:”,在下面的命令行输入上面的字符有同样的效果。

谷歌未找到命令全称,为了加深印象,只能个人谐音记忆:

G(gun,大大的滚动),跳转到最后一行

g+$(为了dollar奋力向前滚动),跳转到最后

gg(GG,完了,回到原点了),跳转到开头

o(over,结束,这一行终于结束了),跳转到这一行末尾

X(禁止通行),输入X后将可以添加密码

 

更新记录:

2020.5.13 添加文本操作-Vi相关

参考:

引用链接:

https://blog.csdn.net/liuyanfeier/article/details/62422742

https://blog.csdn.net/u013846293/article/details/74003051

https://www.cnblogs.com/liaojie970/p/6746230.html

https://blog.csdn.net/zcl369369/article/details/7551962

一条评论

留言

您的电子邮箱地址不会被公开。 必填项已用 * 标注