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 文件全名(带后缀)
如下所示,补入此篇博客。
查看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)。
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的这些个指令含义待补。
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
亲测有效
- 先进入bin目录,执行chmod u+x *.sh
- 在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
ifconfig
或ifconfig -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
:从网上找的截图如下。
管道指令的用法
管道指令使上一指令的结果作为下一指令的【第一个参数?】来使用.
示例
-
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
下载流程
- 从
/etc/apt/sources.list
中检索可用的源中是否有这个软件包; - 生成软件依赖树,将要安装的软件包需要的其他依赖提前列出来;
- 在安装本软件之前,先从
/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)
- 上述各属性的含义:
hour、minute:表示的是每天几点几分,而非每隔几小时几分钟执行,读其他博客自认待确认。
user:linux的用户身份,例如root,或者其他用户。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。- 各属性值的写法
星号(*):代表所有可能的值,例如 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的型号,如下图所示。
(利用管道指令)列出CPU的核数(逻辑CPU)和型号规格
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
:运行结果如下图所示
查看当前CPU运行在32bit模式还是64bit模式
getconf LONG_BIT
:运行结果如下图所示。当前CPU运行在32bit模式下, 但不代表CPU不支持64bit。
查看当前主机内存信息
cat /proc/meminfo
:如下图所示。
查看当前主机硬盘信息
查看当前主机的操作系统
cat /etc/os-release
:以Ubuntu系统的虚拟机为例,如下图所示。
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方式传输,所以
- 它可以提供不间断的连接,非常适用于在网络状况不好或时延较大的网络中进行远程终端访问。比如,在GPRS或3G移动网络访问远程服务器,或者从国内访问国外服务器等特殊场景。
- 支持在服务端创建一个临时的Key供客户端一次性连接,退出后失效。
mosh
是一个能用于SSH连接,也支持通过SSH的配置进行认证,但数据传输本身还是自身的UDP方式,功能比Secure Shell更多的应用。
使用
补入这篇博客。