Linux的指令

  • 以最高权限执行指令
  • sudo + 指令
  • sudo -s
  • sudo -u 用户名 指令
  • sudo -L
  • sudo !!
  • su
  • 退出su(是使用exit?)
  • chmod赋予权限(给当前用户赋予(指令中)文件/文件夹的(指令中)权限)
  • chmod的各个指令参数
  • 提示`/home/ljh/jdk1.8.0_333//lib/dt.jar: Permission denied`时,思考`sudo chmod 755 /home/ljh/jdk1.8.0_333/lib/*.jar`可以,`sudo chmod 755 /home/ljh/jdk1.8.0_333/*`却不行的原因
  • Linux中的用户账户
  • whoami查看当前使用的用户信息
  • 查看当前系统中所有登录用户的信息
  • 修改用户的账户密码
  • 用户退出登陆
  • `*`表示所有
  • 查看系统进程资源利用率
  • top
  • htop
  • 查看当前操作系统(Linux)配置的服务
  • lsof命令
  • Linux中的文件操作指令
  • 创建文件
  • `touch 要创建的文件名.文件后缀`
  • 删除文件
  • 运行文件
  • 文件名称中无后缀类型
  • .sh文件
  • .bin文件
  • .jar文件
  • 移动文件/文件夹
  • 读文件内容
  • cat
  • 查看Linux操作系统版本
  • cat常用用法
  • tail
  • more
  • 写文件
  • 使用vi编辑器进行文件编辑
  • `vi 文件名`进入命令模式
  • 按`i`或者`insert`键进入输入模式
  • 按`ESC`退出输入模式
  • `:`进入底线命令模式
  • 退出文件编辑界面(需在底线命令模式下输入才可生效)
  • 使用vim编辑器进行文件编辑
  • 使用nano编辑~/.bashrc,来完成对当前用户的环境变量等内容的配置
  • 退出编辑界面
  • 使用kate编辑
  • `tee`将从A文件读出的数据,写入B文件
  • 查找文件
  • which
  • 查看(当前/指定)目录下的所有文件(下一级子目录亦会输出)及信息
  • `ls`
  • `ls -l`
  • `ls 路径名`
  • `ls [-aAdfFhilnrRSt] 目录名称`
  • Linux中的复制粘贴
  • cp /路径/* 要粘贴到的目标路径
  • cp 要复制的【文件名/文件夹名】 粘贴的目标路径(路径应为绝对路径?)
  • cp -r 要复制的【文件名/文件夹名】 要粘贴到的路径名(-r表示连外部文件夹一起)
  • Linux中的“dir”
  • Linux中的创建文件夹
  • 从远程服务器下载文件
  • 使用ssh进行多电脑间传输文件的`scp`指令(仅限于Linux到Linux?)
  • 传输单个文件
  • 传输多个文件
  • Linux中的grep指令
  • grep 抓取字段名称时区分大小写
  • Linux中跳转到指定路径下“cd”
  • 进入到指定目录下
  • 进入到仅部分已知的目录下`~`
  • 返回上一级目录
  • 返回上多级目录
  • 返回上多级目录下的指定下多级目录
  • Linux中的根目录“/”
  • Linux中的“pwd”
  • Linux中的进程查看命令“ps”
  • Linux中的搜索
  • 搜索文件
  • 搜索文件夹
  • 使修改的文件立即生效(比如配置文件)
  • Linux中重启Tomcat
  • Linux中的压缩与解压
  • 压缩成zip包
  • 解压zip包
  • 解压【tgz或tar.gz】包
  • Linux查看服务器自己在局域网的IP
  • `ifconfig`或`ifconfig -a`
  • `hostname -I`
  • `ip addr`
  • Linux中的光盘操作
  • 查看当前所有外接光驱CD-ROM的名称(主要用于查看当前光盘名称,因为每次插入光盘,名称都会变化)
  • 从光驱配置文件查看光驱信息(名称)
  • 挂载光盘(将光盘内容挂载到指定盘符下,以供用户通过指定盘符访问读取光盘)
  • 挂载后读光盘时,遇到光盘读写保护的解决方法
  • 取消挂载光盘(使光驱退出光盘)
  • 使用umount取光盘时遇到提示`target is busy`
  • Linux指定网卡等相关设备的IP地址
  • Linux中的JAVA指令
  • 配置JDK
  • Linux查看当前配置的JDK
  • Linux中设置时间
  • 仅设置时间
  • 设置日期和时间
  • 将时间写入bios避免重启失效
  • 查看当前时区
  • 设置/修改当前时区
  • ssh <局域网内的ip地址>
  • Linux中查看操作系统信息
  • Linux中查看CPU信息(例如几核、型号等诸多信息)
  • `top`指令查看Linux系统CPU利用率和内存使用率
  • 管道指令的用法
  • 示例
  • apt-get(Advanced Package Tool)
  • 原理
  • 软件源
  • 下载流程
  • apt-get update
  • apt-get upgrade
  • apt-get install 安装包名
  • apt-get install -y
  • sudo apt-get install -q
  • apt-get remove 安装包名
  • apt-get remove --purge packagename还是apt-get purge
  • apt-get autoremove 安装包名
  • apt-get autoremove --purge 安装包名
  • apt-get autoclean
  • apt-get autoclean
  • apt-get clean
  • apt-get dist-upgrade
  • apt-cache search 名称
  • aptitude
  • apt-cache showpkg pkgs
  • apt-cache show pkgs
  • apt-cache pkgnames
  • dpkg -S 文档名称
  • dpkg -L package
  • dpkg -l
  • apt-file search 文档名
  • ln命令(link)
  • Linux中的Docker指令
  • 在Linux操作系统中设置定时任务
  • 进入定时任务设置界面指令
  • 设置时间
  • 注意事项(博客提到,但自未遇到,预留)
  • Linux查看设备信息
  • 查看当前主机设备型号
  • 查看当前主机CPU信息
  • (利用管道指令)列出CPU的核数(逻辑CPU)和型号规格
  • 查看当前CPU运行在32bit模式还是64bit模式
  • 查看当前主机内存信息
  • 查看当前主机硬盘信息
  • 查看当前主机的操作系统
  • tcpdump
  • Linux中查看共享内存
  • Linux中使用mosh(Mobile Shell)
  • 使用


推荐看菜鸟教程,介绍的很全
待验证后补入此博客

以最高权限执行指令

两个命令的最大区别是:sudo 命令需要输入当前用户的密码,su 命令需要输入 root 用户的密码。另外一个区别是其默认行为。sudo 命令只允许使用提升的权限运行单个命令,而 su 命令会启动一个新的 shell,同时允许使用 root 权限运行尽可能多的命令,直到明确退出登录。

sudo + 指令

sudo Linux指令:以最高权限执行Linux指令

sudo -s

sudo -s:启动IDEA前需要,用途待定。

sudo -u 用户名 指令

指定用户执行指令

sudo -L

显示sudo的设置,列出目前的权限

sudo !!

sudo !!:以root权限执行上一条命令。

su

退出su(是使用exit?)

切换用户后执行exit:退出当前用户

chmod赋予权限(给当前用户赋予(指令中)文件/文件夹的(指令中)权限)

sudo chmod 777 文件夹名:以最高权限sudo授予(使用该指令的)当前用户对于文件夹名的对应权限。
补入此篇博客,描述了所谓777、755的由来

  • 777:最高权限
  • 755:所有者拥有读、写和执行权限,所属组和其他人拥有读和执行权限
  • 750
  • 644:所有者拥有读、写权限,所属组和其他人拥有只读权限
    请注意,若jmeter脚本提示没有权限,就对jmeter脚本赋予777、755权限,而非对Jmeter的安装包进行权限赋予。

chmod的各个指令参数

提示/home/ljh/jdk1.8.0_333//lib/dt.jar: Permission denied时,思考sudo chmod 755 /home/ljh/jdk1.8.0_333/lib/*.jar可以,sudo chmod 755 /home/ljh/jdk1.8.0_333/*却不行的原因

Linux中的用户账户

whoami查看当前使用的用户信息

whoami:查看当前使用指令的(登录)用户名。比如,

test@ubuntu:~$ whoami
test

查看当前系统中所有登录用户的信息

who -q:查看当前系统中所有登录用户的信息,显示当前登录系统的用户名和总的用户数

test@ubuntu20:~$ who -q
test1 test2 test3 test4 test5
# users=5

修改用户的账户密码

passwd 用户名:修改"用户名"对应账户的密码。

用户退出登陆

exit:必须小写,大写不认。

终端窗口执行exit:关闭终端
远程工具执行exit:断开连接
切换用户后执行exit:退出当前用户

*表示所有

/OperFile/*:根目录下OperFile文件夹内的所有文件(是否包含文件夹?待确认)

查看系统进程资源利用率

top

htop

查看当前操作系统(Linux)配置的服务

sudo service --status-all:sudo service指令后面必须有参数,否则会报错。

lsof命令

lsof是一种命令系统监视工具,用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。
``:

Linux中的文件操作指令

创建文件

touch 要创建的文件名.文件后缀

比如,touch 文件名.jtl

删除文件

rm 文件名:删除一个文件,此指令只能用于删除文件,当用来删除文件夹时会报错“无法删除…(文件夹名):是一个目录”。

sudo rm -rf 文件名:删除文件夹及其内的内容。此指令是否还有其他用途,待验证。

运行文件

文件名称中无后缀类型

./文件名:即可执行当前目录下的该文件。
注:若要执行其他路径下的文件,更改路径即可。

.sh文件

./文件名.sh

.bin文件

sh 文件名.bin:执行当前路径下的bin文件。是否需要在文件名前添加路径,待确认。

.jar文件

sudo Java -Jar 文件名.jar,比如安装神通数据库时使用。

移动文件/文件夹

mv 要移动的文件/文件夹名 要移动到的目标路径

读文件内容

cat

cat 文件全名(带后缀)如下所示,补入此篇博客

sudo su命令 sudo linux命令_命令模式

查看Linux操作系统版本

cat /proc/version:Linux返回信息如下图所示。

ljh@ubuntu20:~$ cat /proc/version
Linux version 5.4.0-107-generic (buildd@lcy02-amd64-058) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)) #121-Ubuntu SMP Thu Mar 24 16:04:27 UTC 2022(后面这部分信息自动变灰了,没办法= =)
cat常用用法
  • cat > filename:从键盘创建一个文件,只能创建新文件,不能编辑已有文件。
  • cat file1 file2 > file:将几个文件合并为一个文件。

tail

tail 文件名.文件后缀:查看文件内容,默认显示最后 10 行。

tail -f 文件名.文件后缀:显示 notes.log 文件的最后 10 行,用于跟踪该文件名的文件增长情况。当将某些行添加至 notes.log 文件时,tail 命令会继续显示这些行。 显示一直继续,直到您按下(Ctrl-C)组合键停止显示。

tail后的参数含义:

-f 循环读取,此命令用于显示 notes.log 文件的最后 10 行。当将某些行添加至 notes.log 文件时,tail 命令会继续显示这些行。 显示一直继续,直到您按下(Ctrl-C)组合键停止显示。
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数,比如`tail -c 10 notes.log`表示显示文件 notes.log 的最后 10 个字符
-n<行数> 显示文件的尾部 n 行内容,比如`tail -n +20 notes.log`表示从第 20 行至文件末尾显示文件 notes.log 的内容
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

more

more命令是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。more名单中内置了若干快捷键,常用的有H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)。more命令从前向后读取文件,因此在启动时就加载整个文件。
more 文件名:分页打开文件内容。
(在more 文件名 打开文件内容后)空格:继续下一页加载文件内容(上一页的内容继续在前面显示,即多按几次空格,相当于打开一次性文件全文)。

写文件

使用vi编辑器进行文件编辑

所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。用户刚刚启动 vi/vim,进入的便是命令模式。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。

sudo su命令 sudo linux命令_linux_02

vi 文件名进入命令模式

命令模式:用户刚刚启动 vi/vim,进入的便是命令模式。
此状态下敲击键盘动作会被识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:

  • i :切换到输入模式,以输入字符。
  • x : 删除当前光标所在处的字符。
  • : :从当前的命令模式切换到底线命令模式,以在最底一行输入命令。
  • ctrl+p:光标移动到上一行。
  • ctrl+n:光标移动到下一行。
  • /要在该文件中搜索的字段:输入“要搜索的字段”后,回车即可进入搜索字段结果的界面。N向上“查找搜索字段的结果“,n向下“查找搜索字段的结果”。
i或者insert键进入输入模式

使用方向键(上下左右)调整光标位置

ESC退出输入模式
:进入底线命令模式

当你要输入:q直接退出时,先输入:时光标就已经直接跑到了文件的最后一行,此时就是底线命令模式。

退出文件编辑界面(需在底线命令模式下输入才可生效)
  • :q:直接退出。
  • :w: 保存文件。
  • :wq:保存修改后退出该文件。更具体地说,把编辑缓冲区的内容写到你编辑的文件中,退出编辑器,回到Linux shell界面下。
    注意,该指令要在光标放到最后一行时输入才行,否则无法输入。
  • :q! :强行退出vi。感叹号(!)告诉vi,无条件退出,丢弃缓冲区内容。这样,先前对该文件所做的未保存的修改或输入都会被抛弃。
  • qa!

使用vim编辑器进行文件编辑

vim编辑器具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。连 vim 的官方网站 (https://www.vim.org/) 自己也说 vim 是一个程序开发工具而不是文字处理软件。。

使用nano编辑~/.bashrc,来完成对当前用户的环境变量等内容的配置

nano ~/.bashrc

退出编辑界面

使用ctrl+编辑界面的下方提示

若是选择保存,即ctrl+O,还会有一步确认,此时按回车键即可。(因为不会有提示说按回车)

使用kate编辑

tee将从A文件读出的数据,写入B文件

tee命令用于读取标准输入的数据,并将其内容输出成文件。

  • tee file1 file2:将用户输入的数据同时保存到文件"file1"和"file2"中。
  • Linux指令|tee 1.log:管道指令中使用,将获取到的流输出到1.log

查找文件

which

which命令用于查找文件,会在环境变量$PATH设置的目录里查找符合条件的文件。返回所查询的文件(不论是环境变量,还是真文件,真文件是否可行待验证)的所在绝对路径。
which [文件...]:比如

ljh@ubuntu:~$ which mysql
/usr/bin/mysql

ljh@ubuntu:~$ which tcpdump
/usr/srs/tcpdump

查看(当前/指定)目录下的所有文件(下一级子目录亦会输出)及信息

ls

用于列出当前目录下的"一级子目录及所有文件"

ls -l

以列表形式列出当前目录下的一级子目录及文件,除了文件名还有日期大小等信息。

ls 路径名

用于查看指定路径名下的文件,省去了cd 路径名ls的步骤。

ls [-aAdfFhilnrRSt] 目录名称

用于 按照参数[-aAdfFhilnrRSt] 列出指定目录下的文件

ls -lrth表示 按修改时间排序 反向(即倒序) 列出当前工作目录下的所有文件及其存储大小的详细信息,-lrth实际上是代表了 “-l -r -t -h” 这四个选项集合。

  • -a:全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
  • -d:仅列出目录本身,而不是列出目录内的文件数据(常用)
  • -h: 显示文件存储大小
  • -l:表示开启长列表输出,打开了就会输出文件权限、引用计数、所有者、所属组、文件大小、修改日期和文件名称这些详细的信息。
  • -t:以时间排序,最新的文件会排在上面。
  • -r:表示反向排序、倒序输出。比如ls -ltr会基于时间逆向排序。
  • -x:按列输出,横向排序。
  • -u:按照文件上次被访问的时间排序。

Linux中的复制粘贴

cp指令的含义是将哪些文件/文件夹拷贝到哪个路径下,所以指令模板为cp /路径.../文件 (目标路径)文件夹下

cp /路径/* 要粘贴到的目标路径

将路径下的所有文件拷贝到目标路径下。

cp 要复制的【文件名/文件夹名】 粘贴的目标路径(路径应为绝对路径?)

cp 要复制的文件夹名时:仅将文件夹下的所有文件拷入指定目标路径下

cp -r 要复制的【文件名/文件夹名】 要粘贴到的路径名(-r表示连外部文件夹一起)

cp 要复制的文件夹名时:连同该文件夹和所有文件一同拷入指定目标路径下。

Linux中的“dir”

Linux中的创建文件夹

mkdir 文件夹名:创建文件夹名的文件夹。

从远程服务器下载文件

使用ssh进行多电脑间传输文件的scp指令(仅限于Linux到Linux?)

传输单个文件

scp -r 要发送的文件所在的完整路径/文件名.后缀 接收方电脑的登录用户名@接收方电脑的网址(通过互联网发送就填互联网地址;通过网线直连的局域网就填局域网内的IP地址):接收方电脑内的文件路径(/OperFile/DownloadFile/):点击回车,执行此命令,系统会要求你输入密码,输入后即可开始传输。

传输多个文件

scp -r 要发送的文件所在的完整路径/(此处空白,表示将该路径下的所有文件全部传送至接收方,与*等价,不要忘了"/") 接收方电脑的登录用户名@接收方电脑的网址(通过互联网发送就填互联网地址;通过网线直连的局域网就填局域网内的IP地址):接收方电脑内的文件路径(/OperFile/DownloadFile)(貌似接收方文件路径不需要"/"结尾)

Linux中的grep指令

grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

grep test *file:在当前目录中,查找后缀有file字样的文件中包含test字符串的文件,并打印出该字符串的行。

grep 抓取字段名称时区分大小写

Linux中跳转到指定路径下“cd”

进入到指定目录下

cd tmp/表示进入到tmp目录下。
cd tmp表示进入当前路径下(ls指令下的文件夹)的文件夹。
cd ./tmp是否也可进入到tmp目录下?待确认。

注意,不能使用cd /tmp,因为/表示根目录,所以执行该语句会进入到根目录下的tmp文件夹。
不用一级一级进入,可以直接进入当前目录下的指定文件夹内。

进入到仅部分已知的目录下~

cd ~/adb/test.json:只知道最后一级目录是adb的情况下,可用~代替前面的未知路径。

返回上一级目录

  • cd -:回退上一次的目录,即有可能向上一级目录走,也可能向下一级目录走。
  • cd ..表示到当前目录的上一级目录。

返回上多级目录

cd ../..:返回上两级目录。

返回上多级目录下的指定下多级目录

cd ../dir1:进入上一级目录下的“dir1”文件夹内,即进入到与当前所处位置同级的文件夹。

Linux中的根目录“/”

cd /表示转到根目录。
注意,“root”与“/”路径是两个不同的路径,不要混为一谈。
注意,“/OperFile”表示根目录下的OperFile文件夹,而非当前路径下的OperFile文件夹。。

Linux中的“pwd”

pwd指令用于查询自己当前所在的工作目录的绝对路径。

Linux中的进程查看命令“ps”

PS是LINUX下最常用的也是非常强大的进程查看命令,用于查看操作系统当前运行的进程。

ps:查看当前Linux系统中运行的进程。

ps -ef | grep 进程名:在给出的列表中,最右侧的是CMD(指令),如下图所示。CMD的这些个指令含义待补。

sudo su命令 sudo linux命令_sudo su命令_03

Linux中的搜索

搜索文件

find 【要在哪个目录下搜索文件】 -搜索条件名 搜索条件值 ,例如find ./ -maxdepth 1 -name "*.xml"表示在当前目录下深度为1的范围内查找所有后缀为“.xml”的文件。
补入此篇博客

搜索文件夹

whereis 文件夹名(比如virtualbox):搜索文件夹名的所在路径。
whereis -b 文件夹名(比如virtualbox):搜索文件夹名“virtualbox”的路径。
操作系统中可能会有多个该软件,实测返回结果如下所示。

whereis -b virtualbox
virtualbox: /user/bin/virtualbox /user/lib/virtualbox /user/share/virtualbox

使修改的文件立即生效(比如配置文件)

Source 完整路径下的文件名:使修改后配置文件后,必须注销重新登录才能生效,使用source命令后,立即生效环境变量配置文件;

Linux中重启Tomcat

亲测有效

  1. 先进入bin目录,执行chmod u+x *.sh
  2. 在bin命令行重启应用服务: ./startup.sh

Linux中的压缩与解压

压缩成zip包

zip 压缩包名.zip 要压缩到同一个压缩包的文件名1 要压缩到同一个压缩包的文件名2

解压zip包

unzip -oq 压缩包war包名.war -d 解压后的目标地址(/tmp/tomcat9/webapps)

解压【tgz或tar.gz】包

tar zxvf 压缩包名.tgz或压缩包名.tar.gz -C 解压路径 以下五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用,但只能用其中一个。
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件

下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出

Linux查看服务器自己在局域网的IP

ifconfigifconfig -a

有博客提到,输入该指令后,【eth0中,inet addr或inet6 addr后面的就是linux服务器当前所处的ip地址】但是自己觉得此方法并不好用。

hostname -I

会直接将该服务器的IP地址显示出来,有时可能是多个,还需要自己判别。

但不需要再去读ifconfig显示的大量无关信息。

ip addr

Linux中的光盘操作

在本例中,光盘在系统中的名称为/dev/sr0。在实际的Linux系统使用光盘时,每次插入光盘,名称都有可能发生变化。

查看当前所有外接光驱CD-ROM的名称(主要用于查看当前光盘名称,因为每次插入光盘,名称都会变化)

ls -l /dev|grep cdrom:查看列表中每一行的最后一列,是CD对应的名称。

从光驱配置文件查看光驱信息(名称)

光驱的真正设备文件名是保存在/proc/sys/dev/cdrom/info文件中的,所以可以通过查看这个文件来查询光盘的真正设备文件名,

挂载光盘(将光盘内容挂载到指定盘符下,以供用户通过指定盘符访问读取光盘)

sudo mount /dev/sr0 /mnt/cdrom:将光盘/dev/sr0挂载到/mnt/cdrom下,以后即可通过cd到/mnt/cdrom路径来读取光盘中的文件。

挂载就是把光驱的设备文件和挂载点连接起来。挂载点 /mnt/cdrom 是我们手工建立的空目录,只要是已经建立的空目录都可以作为挂载点。那么/dev/sr0就是光驱在Linux系统中真正的设备文件名,不过注意 /dev/cdrom 只是一个软链接(如同 Windows 系统中的文件快捷方式)。

/dev/sr0代表插入光盘,其名称在光驱每次插入笔记本时都会改变,需要使用。

挂载后读光盘时,遇到光盘读写保护的解决方法

使用sudo chmod 755 /mnt/cdrom可取消光盘的读写保护,授予当前用户读写光盘权限,755及其他具体权限参考本文第二节chmod赋予权限(给当前用户赋予(指令中)文件/文件夹的(指令中)权限)

取消挂载光盘(使光驱退出光盘)

sudo umount /dev/sr0

使用umount取光盘时遇到提示target is busy

  • 注意你当前的命令路径是否在光盘挂载的路径下(/mnt/cdrom),若是,退出光盘的路径,比如cd /即后再次取消挂载即可。
  • 使用语句fuser -kv /mnt/cdrom,【亲测有效,自用在上一条失效后,使用本条成功取消挂载,按照这篇博客,待补入】。

Linux指定网卡等相关设备的IP地址

sudo ifconfig 网卡等相关设备的名称(可用ifconfig命令中查看,第一段的第一个单词就是设备对应的名称) 指定的IP地址 netmask 指定的子网掩码(比如,255.255.255.0):将“网卡等相关设备的名称”对应的设备的IP地址改为指定的地址。
在指定完IP地址后,再使用ifconfig查看IP地址时,对应网卡设备的信息中多了一行inet 【指令中指定的IP地址】 netmask 【指令中指定的子网掩码】。指定网卡IP地址之前,使用ifconfig查看IP地址,仅有inet6 。。。这一行。

Linux中的JAVA指令

配置JDK

详见自己博客

本文提到的三种方式为框架,搜索资料补齐具体方式方法,详见此处,再补入此处

Linux查看当前配置的JDK

which java

Linux中设置时间

仅设置时间

sudo date -s 13:55:设置Linux系统当前时间为13:55:00。
注意,需要sudo,否则会提示无法设置日期,不允许的操作

设置日期和时间

sudo date -s "2017-11-4 13:55:00":设置Linux系统当前日期和时间。
注意,需要用双引号 将日期和时间 括起来。

将时间写入bios避免重启失效

hwclock -w:将时间写入bios避免重启失效,待验证。

查看当前时区

date -R

设置/修改当前时区

tzselect,待验证。

ssh <局域网内的ip地址>

输入指令ssh 10.0.1.1(IP地址)后,会提示输入“账号@10.0.1.1.”对应的密码,输入后回车,会以输入的账号密码的身份登录该IP电脑,命令提示行中会出现“Welcome to Ubantu 。。。”字样,再输入就相当于在远程的电脑中进行操作,自认。

Linux中查看操作系统信息

uname [-amnrsv][--help][--version]--help:显示帮助。
--version:显示版本信息。

[-amnrsv]有:

  • -a或–all  显示全部的信息。
  • -m或–machine  显示电脑类型。
  • -n或–nodename  显示在网络上的主机名称。
  • -r或–release  显示操作系统的发行编号。
  • -s或–sysname  显示操作系统名称。
  • -v  显示操作系统的版本。

Linux中查看CPU信息(例如几核、型号等诸多信息)

自认,在任意路径下输入指令cat /proc/cpuinfo,进入CPU配置文件内,属性cpu cores的值就是CPU核的个数。

top指令查看Linux系统CPU利用率和内存使用率

top:从网上找的截图如下。

sudo su命令 sudo linux命令_文件名_04

管道指令的用法

管道指令使上一指令的结果作为下一指令的【第一个参数?】来使用.

示例

  • ls -l | grep 文件名:将当前路径下带有文件名的文件展示出来,原指令为grep test *file
  • | tee 文件名:将当前读取的文件内容存储到文件名的文件中,原指令为tee file1 file2

apt-get(Advanced Package Tool)

apt-get,全称Advanced Package Tool,是一款适用于Unix和Linux系统的应用程序管理器,可以用来管理本地桌面和网络。其适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。

由于常常需要root权限来操作,所以经常搭配sudo使用

原理

软件源

(定义从哪里寻找、下载deb软件包的)软件源在/etc/apt/sources.list文件中定义,文件内容如下所示。

cat /etc/apt/sources.list  

deb http://security.ubuntu.com/ubuntu trusty-security main restricted
deb-src http://security.ubuntu.com/ubuntu trusty-security main restricted
deb http://security.ubuntu.com/ubuntu trusty-security universe
deb-src http://security.ubuntu.com/ubuntu trusty-security universe
deb http://security.ubuntu.com/ubuntu trusty-security multiverse
deb-src http://security.ubuntu.com/ubuntu trusty-security multiverse
deb http://extras.ubuntu.com/ubuntu trusty main
deb-src http://extras.ubuntu.com/ubuntu trusty main
deb http://us.archive.ubuntu.com/ubuntu/ trusty-proposed main restricted multiverse universe

下载流程

  1. /etc/apt/sources.list中检索可用的源中是否有这个软件包;
  2. 生成软件依赖树,将要安装的软件包需要的其他依赖提前列出来;
  3. 在安装本软件之前,先从/etc/apt/sources.list中查找这些依赖的安装包的下载路径?并安装。

apt-get update

更新数据库?将所有包的来源进行更新,也就是提取最新的包信息。

apt-get upgrade

一般执行在apt-get update之后,它的作用是将系统中旧版本的包升级成最新的,慎用!这是因为在linux下,由于大部分为非商业软件,所以稳定性并没有得到很好的验证,升级到最新版本需要十分慎重!

更新软件包,apt-get upgrade不仅可以从相同版本号的发布版中更新软件包,也可以从新版本号的发布版中更新软件包,尽管实现后者——从新版本号的发布版中更新软件包——的推荐命令为apt-get dist-upgrade。

在运行apt-get upgrade命令时加上-u选项很有用(即:apt-get -u upgrade),可以让apt指令显示完整的可更新软件包列表。不加这个选项,你就只能盲目地更新。APT会下载每个软件包的最新更新版本,然后以合理的次序安装它们。
注意在运行该命令前应先运行 apt-get update更新数据库,更新任何已安装的软件包。

apt-get install 安装包名

一键安装软件包,与源码安装不同的是,这个指令会自动检测并安装依赖,而且用apt-get安装的包都是成熟的软件包,基本不存在安装包有严重bug或者文件缺失的情况。

apt-get install -y

-y选项:免去安装过程中的重复确认安装,(默认yes?)

sudo apt-get install -q

-q选项:即-quiet,静默安装,当然也不是完全静默,会将低等级的log信息屏蔽。

apt-get remove 安装包名

删除一个已安装的软件包(保留配置文档不删除)

apt-get remove --purge packagename还是apt-get purge

删除一个已安装的软件包(配置文档一并删除)

apt-get autoremove 安装包名

删除该安装包及其依赖的软件包(保留配置文档)

apt-get autoremove --purge 安装包名

删除该安装包及其依赖的软件包(配置文档一并删除)

apt-get autoclean

一说,会把已装或已卸的软件都备份在硬盘上,所以假如需要空间的话,能够让这个命令来删除您已卸载掉的软件的备份;
还有说,将已安装的软件包及其.deb文档一并删除。

apt-get autoclean

apt-get clean

这个命令会把安装的软件的备份也删除,但是这样不会影响软件的使用。

apt-get dist-upgrade

将系统升级到新版本。

apt-cache search 名称

在软件包列表中搜索该名称的软件包。

aptitude

详细查看已安装或可用的软件包,由于aptitude比apt-get了解更多信息,能够说他更适合用来进行安装和卸载。

apt-cache showpkg pkgs

显示软件包信息。
apt-cache dumpavail打印可用软件包列表。

apt-cache show pkgs

显示软件包记录,类似于dpkg –print-avail。

apt-cache pkgnames

打印软件包列表中任何软件包的名称。

dpkg -S 文档名称

查询该文档属于哪个已安装软件包。

dpkg -L package

列出软件包中的任何文档。

dpkg -l

列出所有已安装的软件包。

apt-file search 文档名

查找包含特定文档的软件包(不一定是已安装的),这些文档的文档名中含有指定的字符串。apt-file是个单独的软件包,需要先使用apt-get install 安装包名进行安装,然后再运行apt-file update之后才可以。

假如apt-file search 文档名输出的内容太多,可以使用apt-file search filename | grep -w filename(只显示指定字符串作为完整的单词出现在其中的那些文档名)或类似方法,例如:apt-file search filename | grep /bin/(只显示位于诸如/bin或/usr/bin这些文件夹中的文档,假如您要查找的是某个特定的执行文档的话,这样做是有帮助的)。

ln命令(link)

ln命令(link)用于连接文件或目录,

指令参数:

  • -s = soft,意为软链接;
  • -f = force,表示强制创建(使用前请备份之前存在文件);

Linux中的Docker指令

在Linux操作系统中设置定时任务

进入定时任务设置界面指令

crontab -l :定时任务
crontab -e : 编辑定时任务 默认使用vim编辑方式

设置时间

#顺序:分  	  时 	 日 	月 	   周 	 用户 	命令
	minute   hour   day   month   week  user  command
	   * 	  * 	 * 		* 		* 	  	   command(s)
	   ^ 	  ^ 	 ^ 		^ 		^	  ^		  ^
	   | 	  | 	 | 		| 		|     |    	  |-----allowed values
	   | 	  | 	 | 		| 		|     |-------root;普通用户使用用户名?
	   | 	  | 	 | 		| 		|----- Day of week (0 - 7) (Sunday=0 or 7)
	   | 	  | 	 | 		|------- Month (1 - 12)
	   | 	  | 	 |--------- Day of month (1 - 31)
	   | 	  |----------- Hour (0 - 23)
	   |------------- Minute (0 - 59)
  1. 上述各属性的含义:
    hour、minute:表示的是每天几点几分,而非每隔几小时几分钟执行,读其他博客自认待确认。
    user:linux的用户身份,例如root,或者其他用户。
    command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
  2. 各属性值的写法
    星号(*):代表所有可能的值,例如 month 字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
    逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
    中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
    正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用。
     
    例如*/10,如果用在 minute 字段,表示每十分钟执行一次。请注意,不能是/10,别把*漏了。

00 08 * * * root python3 /root/hello.py其中注意的是定时任务里最后添加的python3 /root/hello.py是指令,而不是指令所在脚本的路径。以此为例,其表示的定时任务是任意周、任意月、任意日的08时00分

注意事项(博客提到,但自未遇到,预留)

运行脚本的权限没有放开:chmod -777 文件名
命令有时也需要,用绝对路径。命令跟文件同时用绝对路径!!!!比如

Linux查看设备信息

补入这篇博客

查看当前主机设备型号

比如,华为330(随便编的一个)

查看当前主机CPU信息

cat /proc/cpuinfo:其中的model name对应的是CPU的型号,如下图所示。

sudo su命令 sudo linux命令_linux_05

(利用管道指令)列出CPU的核数(逻辑CPU)和型号规格

cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c:运行结果如下图所示

sudo su命令 sudo linux命令_linux_06

查看当前CPU运行在32bit模式还是64bit模式

getconf LONG_BIT:运行结果如下图所示。当前CPU运行在32bit模式下, 但不代表CPU不支持64bit。

sudo su命令 sudo linux命令_sudo su命令_07

查看当前主机内存信息

cat /proc/meminfo:如下图所示。

sudo su命令 sudo linux命令_后缀_08

查看当前主机硬盘信息

查看当前主机的操作系统

cat /etc/os-release:以Ubuntu系统的虚拟机为例,如下图所示。

sudo su命令 sudo linux命令_命令模式_09

tcpdump

tcpdump命令用于倾倒网络传输数据,可列出经过指定网络界面的数据包文件头。在Linux操作系统中,你必须是系统管理员,自认此指使用此命令必须有管理员权限。
tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]:各参数解释如下所示。

-a 尝试将网络和广播地址转换成名称。
-c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
-dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
-e 在每列倾倒资料上显示连接层级的文件头。
-f 用数字显示网际网络地址。
-F<表达文件> 指定内含表达方式的文件。
-i<网络界面> 使用指定的网络截面送出数据包。
-l 使用标准输出列的缓冲区。
-n 不把主机的网络地址转换成名字。
-N 不列出域名。
-O 不将数据包编码最佳化。
-p 不让网络界面进入混杂模式。
-q 快速输出,仅列出少数的传输协议信息。
-r<数据包文件> 从指定的文件读取数据包数据。
-s<数据包大小> 设置每个数据包的大小。
-S 用绝对而非相对数值列出TCP关联数。
-t 在每列倾倒资料上不显示时间戳记。
-tt 在每列倾倒资料上显示未经格式化的时间戳记。
-T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。
-v 详细显示指令执行过程。
-vv 更详细显示指令执行过程。
-x 用十六进制字码列出数据包资料。
-w<数据包文件> 把数据包数据写入指定的文件。

Linux中查看共享内存

ipcs -m:查看显示所有的共享内存大小、类型等详细信息。

待补入、确认的内容:

第一列就是共享内存的key;
第二列是共享内存的编号shmid;
第三列就是创建的用户owner;
第四列就是权限perms;
第五列为创建的大小bytes;
第六列为连接到共享内存的进程数nattach;
第七列是共享内存的状态status。其中显示“dest”表示共享内存段已经被删除,但是还有用户在使用它,当该段内存的mode字段设置为 SHM_DEST时就会显示“dest”。当用户调用shmctl的IPC_RMID时,内存先查看多少个进程与这个内存关联着,如果关联数为0,就会销 毁这段共享内存,否者设置这段内存的mod的mode位为SHM_DEST,如果所有进程都不用则删除这段共享内存。

Linux中使用mosh(Mobile Shell)

mosh是一款用于从客户端跨互联网连接远程服务器的命令行工具,包含客户端和服务器两部分,用于代替SSH。程序最初由Keith Winstein编写,用于类Unix的操作系统中,发布于GNU GPL V3协议下。因为Mosh基于UDP方式传输,所以

  1. 它可以提供不间断的连接,非常适用于在网络状况不好或时延较大的网络中进行远程终端访问。比如,在GPRS或3G移动网络访问远程服务器,或者从国内访问国外服务器等特殊场景。
  2. 支持在服务端创建一个临时的Key供客户端一次性连接,退出后失效。

mosh是一个能用于SSH连接,也支持通过SSH的配置进行认证,但数据传输本身还是自身的UDP方式,功能比Secure Shell更多的应用。

使用

补入这篇博客