linux 常用命令使用方法

  • A+
所属分类:文档资料

收藏一些Linux常用命令及使用方法,方便日后使用。

linux 常用命令使用方法

一般文件操作命令


ls 命令:查看文件列表,对应windows的dir命令

ls -l 显示文件列表 ls -al -a 显示所有档案及目录 (ls内定将档案名或目录名称开头为"."的视为隐藏档,不会列出) ls -al |grep '^d' 显示目录 ls -al |grep '[d]' 在一个目录中查询不包含目录的所有文件 ls -sh (man ls 查看man帮助.) linux几种文件类型: d 表示此文件是一个目录

  • 表示此文件是一个普通文件 b 表示此文件是一个特殊的块设备I/O文件 c 表示此文件是一个特殊的字符设备I/O文件 l 表示此文件是一个连接文件。在其文件名称后紧跟与它连接的文件路径及名称 file 命令通过探测文件内容判断文件类型

mkdir命令:建立文件目录,对应windows的md命令

mkdir mywork 建立mywork这个目录

touch命令:建立文件

touch 1.txt 建立一个文本文件

clear命令:清屏命令,对应windows的cls命令

pwd命令: 显示当前目录完整路径

cp命令:拷贝文件或目录,对应widnows的copy命令

cp filename1 filename2 cp -r dir1 dir2 复制目录 cp -rf 参数f是删除已经存在的目标文件而不提示 cp -i 参数i和f相反,在覆盖目标文件之前将给出提示要求用户确认,回答y时目标文件将被覆盖,是交互式拷贝.

rm命令:删除文件和目录(删除文件或目录都可以用rm搞定),对应windows的del使用 rm 1.c //将1.c这个文件删除 rm -rf (强制删除文件或目录,删除时不提示.)

cd netseek 进入netseek这个目录,对应windows的cd 命令 cd 退出当前目录 cd ../ 进入上一级目录. cd - 返回上一次目录 cd ~ 返回主目录

查找文件命令 几种介绍: find 路径 -name 文件名 find /etc -name named.conf locate 通过文件名搜索文件的工具(要先通过updatedb建立索引数据库) localte named.conf whereis 是寻找二进制文件,同时也会找到其帮助文件 which 和where 相似,只是我们所设置的环境变量中设置好的路径中寻找;

远程操作与文件传输 ssh user@remote.machine scp user@remote.machine:/remote/path /local/path scp /local/path user@remote.machine:/remote/path


用户权限操作命令


1.# 表示权限用户(如:root),$ 表示普通用 开机提示:Login:输入用户名 password:输入口令 用户是系统注册用户成功登陆后,可以进入相应的用户环境. 退出当前shell,输入:exit

2.useradd netseek 添加一个netseek用户 passwd netseek 给netseek这个用户设置密码. (/etc/passwd /etc/group) userdel netseek 删除账号 userdel -r netseek 删除账号连同自家目录.

3.权限的控制(rwx 421) chmod +x hello.sh 赋于可执行权限. (详细介绍一下权限的控制) chmod 命令 权限修改 用法:chmod 一位8进制数 filename (rwx 421) eg: chmod u+x filenmame 只想给自己运行,别人只能读 chown netseek.netseek mydir 改变用户属组 u:表示文件所有者 g:表示同组用户 o:表示其它用户 a:表示所有用户 opt则是代表操作,可以为: +:添加某个权限 -:取消某个权限 =:赋予给定的权限,并取消原有的权限 而mode则代表权限: r:可读 4 w:可写 2 x:可执行 1

4.w 查看用户登陆信息 who 查看当前登陆用户 last 最近一个月用户登陆情况 lastlog 检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容 whoami 确认自己身份.


设置linux时间和日期


date 命令("date MMDDhhmmYYYY.ss") 2006年7月24日12:37 ,30秒 date 072412372006.30 date -s 20:30:30 #设置系统时间为20: 30:30 date -s 2006-7-24 #设置系统时期为2006-7-24 clock -r #对系统Bios中读取时间参数 clock -w #将系统时间(如由date设置的时间)写入Bios


进程管理


ps aux ps -ef |grep kill -9 看看哪个进程占用的内存最大 ps -aux|sort +5n 将程序放在前后台执行 cp file1 file2 & &与ctrl+z 你可以使用&或ctrl+z来将命令放在后台执行. fg 是将放在后台执行的程序再放回前台.


mount 加载一个硬件设备


用法:mount [参数] 要加载的设备 载入点 eg: mount /dev/cdrom cd /mnt/cdrom //进入光盘目录

u盘: mkdir /mnt/usb;(注:创建挂载目录) mount /mnt/sda1 /mnt/usb;(注:挂载U盘) 现在就可以使用U盘了,在/mnt/usb目录下的内容就是U盘里的内容了; 使用完后,用以下命令卸载U盘即可。 umount /mnt/usb mount 列出系统所有的分区 mount -t iso9660 /dev/cdrom /mnt/cdrom 挂载光盘 mount -t vfat /dev/fd0 /mnt/floppy 挂载软盘 mount -t vfat -o iocharset=utf8,umask=000 /dev/hda2 /mnt/hda2 挂载fat32分区 mount -t ntfs -o nls=utf8,umask=000 /dev/hda3 /mnt/hda3 挂载ntfs分区 umount /mnt/hda3 缷载 注:挂载设备前,请先fdisk -l 看一下.


系统关机和重启:


shutwond [-t 秒数] [-rkhncff] 时间 [警告信息] -t 秒数:设置在切换至不同的runlevel之前,警告和删除两信号之彰间的延迟时间(秒) -k 发出警告信息,但不是真的要shutdown -r shutdown这后重新开机 -h shutdown这后开机 -n 不经过init,由shutdown命令本身来做开机工作(不建议你使用) -f 重新开机时,跳过fsck指令,不检查文件系统. -F 重新开机时,强迫做fsck检查. -c 将已经正在shutdown的动作取消 shutdown -h now 立刻关机,其中now相当于时间为0,halt,poweroff也可以关机,或者直接init 0 shutdown -h 20:30 系统将在今晚的8:30关机 shutdown -h +10 系统再过十分钟后自动关机. shutdown -t3 -r now 立刻重新开机,但在警告和删除processes这间, shutdown -k now 'Hey! Go away! now...' 发出警告信息,但没有真的关机. reboot: shutdown -r now 几乎与reboot相同,不关建议用reboot执行如下: shutdown -r +30 'The system wiil reboot' shutdown -r +10 'Hey!Go away!' 10分钟后系统重启.


pscp使用命令,注意该命令是windows命令,在windows下上传下载linux服务器的文件


pscp时putty安装包所带的远程文件传输工具,下载地址,一般为了使用方便,把pscp.ext放到系统的system32目录下面,这样在任何目录下都可以使用它。

1.上传文件到服务器命令:

pscp -i d:\test.ppk c:\test.txt user_name@server_ip:/tmp 其中,-i是参数,指定登录时所用的密钥文件,c:\test.txt是windows中要上传的文件,d:\test.ppk是密钥文件,user_name是登录用户名,server_ip是服务器ip,/tmp是复制到服务器的路径

2.从服务器下载文件命令:

pscp -i d:\test.ppk user_name@server_ip:/var/www/test.txt d:\


ZiP unzip压缩解压缩命令


zip [选项] 压缩包名 源文件或源目录列表

选项含义
-r递归压缩目录,及将制定目录下的所有文件以及子目录全部压缩。
-m将文件压缩之后,删除原始文件,相当于把文件移到压缩文件中。
-v显示详细的压缩过程信息。
-q在压缩的时候不显示命令的执行过程。
-压缩级别压缩级别是从 1~9 的数字,-1 代表压缩速度更快,-9 代表压缩效果更好。
-u更新压缩文件,即往压缩文件中添加新文件。

下面给大家举几个例子。

【例 1】zip 命令的基本使用。

[root@localhost ~]

# zip ana.zip anaconda-ks.cfg

[root@localhost ~]

# zip test.zip install.log install.log.syslog

使用 zip 命令压缩目录,需要使用“-r”选项,例如:

[root@localhost ~]

# mkdir dir1 #建立测试目录

[root@localhost ~]

# zip -r dir1.zip dir1 adding: dir1/(stored 0%) #压缩目录

[root@localhost ~]

# ls -dl dir1.zip -rw-r--r-- 1 root root 160 6月 1716:22 dir1.zip #压缩文件生成

linux中提示没有unzip命令解决方法

如果你如法使用unzip命令解压.zip文件,可能是你没有安装unzip软件,下面是安装方法

命令: yum list | grep zip/unzip #获取安装列表

安装命令: yum install zip #提示输入时,请输入y;

安装命令:yum install unzip #提示输入时,请输入y;

unzip 和 unzip 解压文件到指定的目录

Linux 常用的压缩命令有 gzip 和 zip,两种压缩包的结尾不同:zip 压缩的后文件是 *.zip ,而 gzip 压缩后的文件 *.gz 相应的解压缩命令则是 gunzip 和 unzip

gzip 命令: # gzip test.txt 它会将文件压缩为文件 test.txt.gz,原来的文件则没有了,解压缩也一样

# gunzip test.txt.gz 它会将文件解压缩为文件 test.txt,原来的文件则没有了,为了保留原有的文件,我们可以加上 -c 选项并利用 linux 的重定向

# gzip -c test.txt > /root/test.gz 这样不但可以将原有的文件保留,而且可以将压缩包放到任何目录中,解压缩也一样

# gunzip -c /root/test.gz > ./test.txt

zip 命令: # zip test.zip test.txt 它会将 test.txt 文件压缩为 test.zip ,当然也可以指定压缩包的目录,例如 /root/test.zip

# unzip test.zip 它会默认将文件解压到当前目录,如果要解压到指定目录,可以加上 -d 选项

# unzip test.zip -d /root/


linux mysql 操作命令


1.linux下启动mysql的命令: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径)

2.linux下重启mysql的命令: mysqladmin restart /ect/init.d/mysql restart (前面为mysql的安装路径)

3.linux下关闭mysql的命令: mysqladmin shutdown /ect/init.d/mysql shutdown (前面为mysql的安装路径)

4.连接本机上的mysql: 进入目录mysql\bin,再键入命令mysql -uroot -p, 回车后提示输入密码。 退出mysql命令:exit(回车)

5.修改mysql密码: mysqladmin -u用户名 -p旧密码 password 新密码 或进入mysql命令行SET PASSWORD FOR root=PASSWORD("root");

6.增加新用户。(注意:mysql环境中的命令后面都带一个分号作为命令结束符) grant select on 数据库.* to 用户名@登录主机 identified by "密码" 如增加一个用户test密码为123,让他可以在任何主机上登录, 并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命令: grant select,insert,update,delete on . to " Identified by "123";

有关mysql数据库方面的操作 必须首先登录到mysql中,有关操作都是在mysql的提示符下进行,而且每个命令以分号结束

1、显示数据库列表。 show databases;

2、显示库中的数据表: use mysql; //打开库 show tables;

3、显示数据表的结构: describe 表名; 4、建库: create database 库名;

GBK: create database test2 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; UTF8: CREATE DATABASE test2 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 5、建表: use 库名; create table 表名(字段设定列表);

6、删库和删表: drop database 库名; drop table 表名;

7、将表中记录清空: delete from 表名;

truncate table 表名;

8、显示表中的记录: select * from 表名;

9、编码的修改 如果要改变整个mysql的编码格式: 启动mysql的时候,mysqld_safe命令行加入 --default-character-set=gbk

如果要改变某个库的编码格式:在mysql提示符后输入命令 alter database db_name default character set gbk;

10.重命名表

alter table t1 rename t2;

11.查看sql语句的效率

explain < table_name >

例如:explain select * from t3 where id=3952602;

12.用文本方式将数据装入数据库表中(例如D:/mysql.txt)

mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE MYTABLE;

数据的导入导出

1、文本数据转到数据库中 文本数据应符合的格式:字段数据之间用tab键隔开,null值用来代替。例: 1 name duty 2006-11-23 数据传入命令 load data local infile "文件名" into table 表名;

2、导出数据库和表 mysqldump --opt news > news.sql(将数据库news中的所有表备份到news.sql文件,news.sql是一个文本文件,文件名任取。) mysqldump --opt news author article > author.article.sql(将数据库news中的author表和article表备份到author.article.sql文件, author.article.sql是一个文本文件,文件名任取。) mysqldump --databases db1 db2 > news.sql(将数据库dbl和db2备份到news.sql文件,news.sql是一个文本文件,文件名任取。) mysqldump -h host -u user -p pass --databases dbname > file.dump 就是把host上的以名字user,口令pass的数据库dbname导入到文件file.dump中 mysqldump --all-databases > all-databases.sql(将所有数据库备份到all-databases.sql文件,all-databases.sql是一个文本文件,文件名任取。)

3、导入数据 mysql < all-databases.sql(导入数据库) mysql>source news.sql;(在mysql命令下执行,可导入表)

连接MySQL(windows下操作) 格式: mysql -h主机地址 -u用户名 -p用户密码

1、例1:连接到本机上的MYSQL。

首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql>。

2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:

mysql -h110.110.110.110 -uroot -pabcd123

(注:u与root可以不用加空格,其它也一样)

3、退出MYSQL命令: exit (回车)。

二、修改密码

格式:mysqladmin -u用户名 -p旧密码 password 新密码

1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令:

mysqladmin -uroot -password ab12

注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。

2、例2:再将root的密码改为djg345。

mysqladmin -uroot -pab12 password djg345

三、增加新用户。(注意:和上面不同,下面的因为是MySQL环境中的命令,所以后面都带一个分号作为命令结束符)

格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"

例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MySQL,然后键入以下命令:

grant select,insert,update, delete on . to test1@"%" Identified by "abc";

但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的MySQL数据库并对你的数据可以为所欲为了,解决办法见例2。

例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作 (localhost指本地主机,即MySQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据 库,只能通过MySQL主机上的web页来访问。

grant select,insert,update, delete on mydb.* to test2@localhost identified by "abc";

如果你不想test2有密码,可以再打一个命令将密码消掉。

grant select,insert,update,delete on mydb .* to test2@localhost identified by "";

启动:net start mySql; 进入:mysql -u root -p/mysql -h localhost -u root -p databaseName; 列出数据库:show databases; 选择数据库:use databaseName; 列出表格:show tables; 显示表格列的属性:show columns from tableName; 建立数据库:source fileName.txt; 匹配字符:可以用通配符_代表任何一个字符,%代表任何字符串; 增加一个字段:alter table tabelName add column fieldName dateType; 增加多个字段:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType; 多行命令输入:注意不能将单词断开;当插入或更改数据时,不能将字段的字符串展开到多行里,否则硬回车将被储存到数据中; 增加一个管理员帐户:grant all on . to user@localhost identified by "password"; 每条语句输入完毕后要在末尾填加分号';',或者填加'\g'也可以; 查询时间:select now(); 查询当前用户:select user(); 查询数据库版本:select version(); 查询当前使用的数据库:select database();

1、删除student_course数据库中的students数据表: rm -f student_course/students.*

2、备份数据库:(将数据库test备份) mysqldump -u root -p test>c:\test.txt 备份表格:(备份test数据库下的mytable表格) mysqldump -u root -p test mytable>c:\test.txt 将备份数据导入到数据库:(导回test数据库) mysql -u root -p test

3、创建临时表:(建立临时表zengchao) create temporary table zengchao(name varchar(10));

4、创建表是先判断表是否存在 create table if not exists students(……);

5、从已经有的表中复制表的结构 create table table2 select * from table1 where 1<>1;

6、复制表 create table table2 select * from table1;

7、对表重新命名 alter table table1 rename as table2;

8、修改列的类型 alter table table1 modify id int unsigned;//修改列id的类型为int unsigned alter table table1 change id sid int unsigned;//修改列id的名字为sid,而且把属性修改为int unsigned

9、创建索引 alter table table1 add index ind_id (id); create index ind_id on table1 (id); create unique index ind_id on table1 (id);//建立唯一性索引

10、删除索引 drop index idx_id on table1; alter table table1 drop index ind_id;

11、联合字符或者多个列(将列id与":"和列name和"="连接) select concat(id,':',name,'=') from students;

12、limit(选出10到20条)<第一个记录集的编号是0> select * from students order by id limit 9,10;

13、MySQL不支持的功能 事务,视图,外键和引用完整性,存储过程和触发器

14、MySQL会使用索引的操作符号 <,<=,>=,>,=,between,in,不带%或者_开头的like

15、使用索引的缺点 1)减慢增删改数据的速度; 2)占用磁盘空间; 3)增加查询优化器的负担; 当查询优化器生成执行计划时,会考虑索引,太多的索引会给查询优化器增加工作量,导致无法选择最优的查询方案;

16、分析索引效率 方法:在一般的SQL语句前加上explain; 分析结果的含义: 1)table:表名; 2)type:连接的类型,(ALL/Range/Ref)。其中ref是最理想的; 3)possible_keys:查询可以利用的索引名; 4)key:实际使用的索引; 5)key_len:索引中被使用部分的长度(字节); 6)ref:显示列名字或者"const"(不明白什么意思); 7)rows:显示MySQL认为在找到正确结果之前必须扫描的行数; 8)extra:MySQL的建议;

17、使用较短的定长列 1)尽可能使用较短的数据类型; 2)尽可能使用定长数据类型; a)用char代替varchar,固定长度的数据处理比变长的快些; b)对于频繁修改的表,磁盘容易形成碎片,从而影响数据库的整体性能; c)万一出现数据表崩溃,使用固定长度数据行的表更容易重新构造。使用固定长度的数据行,每个记录的开始位置都是固定记录长度的倍数,可以很容易被检测到,但是使用可变长度的数据行就不一定了; d)对于MyISAM类型的数据表,虽然转换成固定长度的数据列可以提高性能,但是占据的空间也大;

18、使用not null和enum 尽量将列定义为not null,这样可使数据的出来更快,所需的空间更少,而且在查询时,MySQL不需要检查是否存在特例,即null值,从而优化查询; 如果一列只含有有限数目的特定值,如性别,是否有效或者入学年份等,在这种情况下应该考虑将其转换为enum列的值,MySQL处理的更快,因为所有的enum值在系统内都是以标识数值来表示的;

19、使用optimize table 对于经常修改的表,容易产生碎片,使在查询数据库时必须读取更多的磁盘块,降低查询性能。具有可变长的表都存在磁盘碎片问题,这个问题对blob数据类型更为突出,因为其尺寸变化非常大。可以通过使用optimize table来整理碎片,保证数据库性能不下降,优化那些受碎片影响的数据表。 optimize table可以用于MyISAM和BDB类型的数据表。实际上任何碎片整理方法都是用mysqldump来转存数据表,然后使用转存后的文件并重新建数据表;

20、使用procedure analyse() 可以使用procedure analyse()显示最佳类型的建议,使用很简单,在select语句后面加上procedure analyse()就可以了;例如: select * from students procedure analyse(); select * from students procedure analyse(16,256); 第二条语句要求procedure analyse()不要建议含有多于16个值,或者含有多于256字节的enum类型,如果没有限制,输出可能会很长;

21、使用查询缓存 1)查询缓存的工作方式: 第一次执行某条select语句时,服务器记住该查询的文本内容和查询结果,存储在缓存中,下次碰到这个语句时,直接从缓存中返回结果;当更新数据表后,该数据表的任何缓存查询都变成无效的,并且会被丢弃。 2)配置缓存参数: 变量:query_cache _type,查询缓存的操作模式。有3中模式,0:不缓存;1:缓存查询,除非与 select sql_no_cache开头;2:根据需要只缓存那些以select sql_cache开头的查询; query_cache_size:设置查询缓存的最大结果集的大小,比这个值大的不会被缓存。

22、调整硬件 1)在机器上装更多的内存; 2)增加更快的硬盘以减少I/O等待时间; 寻道时间是决定性能的主要因素,逐字地移动磁头是最慢的,一旦磁头定位,从磁道读则很快; 3)在不同的物理硬盘设备上重新分配磁盘活动; 如果可能,应将最繁忙的数据库存放在不同的物理设备上,这跟使用同一物理设备的不同分区是不同的,因为它们将争用相同的物理资源(磁头)。

1、创建数据库

mysql> create database drop_database; Query OK, 1 row affected (0.00 sec)

2、删除一个已经确定存在的数据库

mysql> drop database drop_database; Query OK, 0 rows affected (0.00 sec)

3、删除一个不确定存在的数据库

mysql> drop database drop_database; ERROR 1008 (HY000): Can't drop database 'drop_database'; database doesn't exist

//发生错误,不能删除'drop_database'数据库,该数据库不存在。

mysql> drop database if exists drop_database; Query OK, 0 rows affected, 1 warning (0.00 sec)//产生一个警告说明此数据库不存在

mysql> create database drop_database; Query OK, 1 row affected (0.00 sec)

mysql> drop database if exists drop_database;//if exists 判断数据库是否存在,不存在也不产生错误 Query OK, 0 rows affected (0.00 sec)

查看mysql在那个目录命令如下:

ps -ef|grep mysql

停止mysql命令

service mysqld stop

定位到my.cnf文件命令

vi /etc/my.cnf

添加 找到

[mysql]

no-auto-rehash socket = /tmp/mysql.sock

然后 重启 service mysqld start

然后进入shujuk

mysql -uroot -p

Mysql中的数据备份: Mysql中数据备份使用的命令是:mysqldump命令将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。

1、Mysql语句备份一个数据库: 备份的语句mysqldump的基本语法: mysqldump -u username -p dbname table1 table2...->BackupName.sql;

参数解析:

dbname:要备份数据库的名称;

table1和table2参数表示的是需要备份的数据库表的名称,假如为空则表示需要备份整个数据库;

BackupName.sql表示的是将数据库备份到指定的这个以后缀米国.sql的文件中,这个文件的前面可以执行一个详细的绝对路径下;

*、 mysql -u username -p password: 这个命令用于输入用户名和密码登陆mysql服务器;

*、show databases;:用于查看mysql服务器中的数据库情况(会罗列出mysql中的所有数据库的信息)

*、use databses;:选择使用的默认数据库;

*、 show tables;:查看默认数据库中的表情况(罗列所有表信息)

二、数据还原:

1、还原使用mysqldump命令备份的数据库的语法如下:    mysql -u root -p [dbname] < backup.sq


sudo


Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

使用权限:在 /etc/sudoers 中有出现的使用者。

语法

sudo -V
sudo -h
sudo -l
sudo -v
sudo -k
sudo -s
sudo -H
sudo [ -b ] [ -p prompt ] [ -u username/#uid] -s
sudo command

参数说明

  • -V 显示版本编号
  • -h 会显示版本编号及指令的使用方式说明
  • -l 显示出自己(执行 sudo 的使用者)的权限
  • -v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
  • -k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
  • -b 将要执行的指令放在背景执行
  • -p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
  • -u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
  • -s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
  • -H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )
  • command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令

实例

sudo命令使用

$ sudo ls

[sudo]

password for hnlinux: hnlinux is not in the sudoers file. This incident will be reported.

指定用户执行命令

# sudo -u userb ls -l

显示sudo设置

$ sudo -L //显示sudo设置
Available options in a sudoers ``Defaults'' line:

syslog: Syslog facility if syslog is being used for logging
syslog_goodpri: Syslog priority to use when user authenticates successfully
syslog_badpri: Syslog priority to use when user authenticates unsuccessfully
long_otp_prompt: Put OTP prompt on its own line
ignore_dot: Ignore '.' in $PATH
mail_always: Always send mail when sudo is run
mail_badpass: Send mail if user authentication fails
mail_no_user: Send mail if the user is not in sudoers
mail_no_host: Send mail if the user is not in sudoers for this host
mail_no_perms: Send mail if the user is not allowed to run a command
tty_tickets: Use a separate timestamp for each user/tty combo
lecture: Lecture user the first time they run sudo
lecture_file: File containing the sudo lecture
authenticate: Require users to authenticate by default
root_sudo: Root may run sudo
log_host: Log the hostname in the (non-syslog) log file
log_year: Log the year in the (non-syslog) log file
shell_noargs: If sudo is invoked with no arguments, start a shell
set_home: Set $HOME to the target user when starting a shell with -s
always_set_home: Always set $HOME to the target user's home directory
path_info: Allow some information gathering to give useful error messages
fqdn: Require fully-qualified hostnames in the sudoers file
insults: Insult the user when they enter an incorrect password
requiretty: Only allow the user to run sudo if they have a tty
env_editor: Visudo will honor the EDITOR environment variable
rootpw: Prompt for root's password, not the users's
runaspw: Prompt for the runas_default user's password, not the users's
targetpw: Prompt for the target user's password, not the users's
use_loginclass: Apply defaults in the target user's login class if there is one
set_logname: Set the LOGNAME and USER environment variables
stay_setuid: Only set the effective uid to the target user, not the real uid
preserve_groups: Don't initialize the group vector to that of the target user
loglinelen: Length at which to wrap log file lines (0 for no wrap)
timestamp_timeout: Authentication timestamp timeout
passwd_timeout: Password prompt timeout
passwd_tries: Number of tries to enter a password
umask: Umask to use or 0777 to use user's
logfile: Path to log file
mailerpath: Path to mail program
mailerflags: Flags for mail program
mailto: Address to send mail to
mailfrom: Address to send mail from
mailsub: Subject line for mail messages
badpass_message: Incorrect password message
timestampdir: Path to authentication timestamp dir
timestampowner: Owner of the authentication timestamp dir
exempt_group: Users in this group are exempt from password and PATH requirements
passprompt: Default password prompt
passprompt_override: If set, passprompt will override system prompt in all cases.
runas_default: Default user to run commands as
secure_path: Value to override user's $PATH with
editor: Path to the editor for use by visudo
listpw: When to require a password for 'list' pseudocommand
verifypw: When to require a password for 'verify' pseudocommand
noexec: Preload the dummy exec functions contained in 'noexec_file'
noexec_file: File containing dummy exec functions
ignore_local_sudoers: If LDAP directory is up, do we ignore local sudoers file
closefrom: File descriptors >= %d will be closed before executing a command
closefrom_override: If set, users may override the value of `closefrom' with the -C option
setenv: Allow users to set arbitrary environment variables
env_reset: Reset the environment to a default set of variables
env_check: Environment variables to check for sanity
env_delete: Environment variables to remove
env_keep: Environment variables to preserve
role: SELinux role to use in the new security context
type: SELinux type to use in the new security context
askpass: Path to the askpass helper program
env_file: Path to the sudo-specific environment file
sudoers_locale: Locale to use while parsing sudoers
visiblepw: Allow sudo to prompt for a password even if it would be visisble
pwfeedback: Provide visual feedback at the password prompt when there is user input
fast_glob: Use faster globbing that is less accurate but does not access the filesystem
umask_override: The umask specified in sudoers will override the user's, even if it is more permissive

以root权限执行上一条命令

$ sudo !!

以特定用户身份进行编辑文本

$ sudo -u uggc vi ~www/index.
//以 uggc 用户身份编辑  home 目录下www目录中的 index. 文件

列出目前的权限

sudo -l

列出 sudo 的版本资讯

sudo -V

网络相关命令


38.网络命令 ifconfig 显示或设置网络设备,可以查看当前ip,类似于windows里的ipconfig service network restart(/etc/rc.d/init.d/network restart) 重启网卡 ifdown eth0 关闭网卡 ifup eth0 开启网卡 route -n 查看路由表 route add -net 192.168.20.1 netmask 255.255.255.0 dev eth0 netstat 查看网络连接情况 netstat -i 显示网卡运行情况 netstat -r 查看主机的路由列表 traceroute hostname 显示主机名 hostname -i 显示当前主机名的IP.

数据库启动


启动mysql: service mysqld start(/etc/rc.d/init.d/mysqld start) mysql -uroot -p 输入密码即可操作mysql数据库. 启动Oracle su - oracle $lsnrctl stop $lsnrctl start sqlplus /nolog conn /as sysdba(connected) startup


安装软件包


rpm包安装: rpm -ivh xxx.rpm 安装rpm包 rpm -qa --last | less 根据安装日期显示已经安装的包 rpm -qa |grep mysql -i 查询系统是否安装mysql包(-i,忽略大小写) rpm -e 删除安装的软件包 rpm -e mysql* --nodpes 强制删除相关的软件包 rpm --test 测试安装 rpm -qi 查询mysql套件的说明资料 rpm -qpl xxx.rpm 查看rpm包内含的内容. rpm -qc[d] 设定档与说明档 rpm -Uvh 升级安装 rpmbuild --bb SPECS/xxx.spec 重新装将xxx.spec编译成rpm包. rpmbuild --rebuild packagename.src.rpm 重新把.src.rpm编译成rpm包. 源码编译安装(经典) ./configure 检查系统信息(./configure --help | more 帮助信息,可以看到相关的参数设定) make clean 清除之前留下的文件 make 编译 make install 安装 注:源码包安装,一般先将文件解压,安装过程大致上面几步,具体说明一般见解压后目录里的(INSTALL,READEME说明.)


环境变量设置


-bash: *: command not found解决办法

原因:

在设置环境变量时,编辑profile文件没有写正确,导致在命令行下命令不能够识别。

解决办法:

  用文本编辑器打开/etc/profile ,并把path加上去。在PATH后加上(.PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin/)如下为我配置(这里我使用Xftp5直接进行记事本编辑)

配置前为:

#set java environment export JAVA_HOME=/usr/java/jdk/jdk1.8.0_151

export JRE_HOME=/usr/java/jdk1.8.0_151/jre

export CLASSPATH=.:$JAVA_HOME/lib$:JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin/$JAVA_HOME:PATH

加上path后如下

#set java environment export JAVA_HOME=/usr/java/jdk/jdk1.8.0_151

export JRE_HOME=/usr/java/jdk1.8.0_151/jre

export CLASSPATH=.:$JAVA_HOME/lib$:JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin/$JAVA_HOME:PATH .PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin/

为什么要这么做?

首先就要考虑root 的$PATH里是否已经包含了这些环境变量。

主要是这四个:/bin ,/usr/bin,/sbin,/usr/sbin。

linux主要文件夹功能


./bin:

bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。

/usr/bin: 主要放置一些应用软体工具的必备执行档例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb、wget等。

/sbin: 主要放置一些系统管理的必备程式例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等。

/usr/sbin: 放置一些网路管理的必备程式例如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。


Linux下提示bash:command not found解决方法小结

: command not found的情况。 导致这种问题的原因有很多(就像导致肚子疼痛的原因各种各样),有可能是环境变量配置问题,也可能某一个bin文件夹下的内容全部删除导致等,所以现在将主要导致bash:command not found的原因写在下面,希望对大家的开发过程有帮助。

1.检查该命令工具是否安装 出现这个问题时,首先用whereis命令确定该指令工具是否安装,例如确定gcc是否安装 whereis gcc,如果此时显示gcc:/usr/bin/gcc 则说明已经安装好,可以接着用下面的方法继续找原因,如果只是显示 gcc:,则说明gcc没有下载,此时进行下载就可以。

Centos(Rehat系列)系统下载gcc命令:yum install gcc Ubuntu系统下载gcc命令:apt-get inatall gcc

2.检查各个bin文件夹的内容是否非空 在使用其它相对更复杂的手段“还原”到之前好用的状态之前,应该先检查的bin文件夹里的命令是否都在,这个方法最简单也最直观。如果自己需要用到的命令所在的bin文件夹为空,那么就会理所应当的出现-bash: ***: command not found情况。

要检查的bin文件夹有以下几个: /bin, /usr/bin, /sbin, /usr/sbin

查看这四个里面的是否为空,若出现为空的情况,那么解决办法就是找一个同样系统版本的linux把对应文件夹的内容复制到本地空的bin文件夹中。例如我的linux版本是CentOS release 6.8,我输入gcc命令编译的时候出现bash: gcc: command not found ,通过查看四个目录发现其中 /usr/bin内容为空,然后自己通过将同样的CentOS release 6.8系统下的 /usr/bin内容全部复制到本地的/usr/bin中,然后再次gcc编译,通过。 注意,这种排查方法适用在输入类似ls、tty这种常见指令以前可用但最近出现not found的情况。

3.检查是否是$PATH设置是否正确 $PATH决定了shell到哪些目录下去寻找命令或工具,PATH的值是一系列目录,当程序运行时,Linux系统会到这些目录下进行搜索,所以当出现 -bash: ** : command not found可能因为是PATH没有设置。

PATH设置格式:

PATH = $PATH::::...: 1 可以将自己指定的路径加到PATH中(见上,若有多个变量路径则在中间用冒号":"隔开),例如:export PATH=/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH,设置成功之后,使用echo查看是否配置成功:

[root@localhost u-boot-sh4]

# echo $PATH /opt/STM/STLinux-2.3/devkit/sh4/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 1 2 上述方法添加PATH 在终端关闭后会消失。建议通过 vi /etc/profile 修改PATH,也可修改主用户目录下的 .bashrc,这样可以永久生效。若使用前一种方法,则输入指令vi /etc/profile,然后在该文件最后添加:

export PATH="/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH" 1 保存后,退出,再执行:

[root@localhost etc]

# source /etc/profile 1 不报错就成功。


Linux创建连接命令 ln -s创建软连接


ln -s 是linux中一个非常重要命令,一定要熟悉。它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,
具体用法是:ln -s 源文件 目标文件。
当 我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的 目录下
用ln命令链接
(link)它就可以,不必重复的占用磁盘空间。例如:ln -s /bin/less /usr/local/bin/less
-s 是代号(symbolic)的意思。
这 里有两点要注意:第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;第二,ln的链接又软链接 和硬链接
两种,软链接就是
ln -s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还
是硬链接,文件都保持同步变化。

【硬连接】 硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

【软连接】 另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

Linux读取环境变量的方法:

export命令显示当前系统定义的所有环境变量
echo $PATH命令输出当前的PATH环境变量的值
这两个命令执行的效果如下

uusama@ubuntu:~$ export
declare -x HOME="/home/uusama"
declare -x LANG="en_US.UTF-8"
declare -x LANGUAGE="en_US:"
declare -x LESSCLOSE="/usr/bin/lesspipe %s %s"
declare -x LESSOPEN="| /usr/bin/lesspipe %s"
declare -x LOGNAME="uusama"
declare -x MAIL="/var/mail/uusama"
declare -x PATH="/home/uusama/bin:/home/uusama/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
declare -x SSH_TTY="/dev/pts/0"
declare -x TERM="xterm"
declare -x USER="uusama"
 
uusama@ubuntu:~$ echo $PATH
/home/uusama/bin:/home/uusama/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
其中PATH变量定义了运行命令的查找路径,以冒号:分割不同的路径,使用export定义的时候可加双引号也可不加。

Linux环境变量配置方法一:export PATH

使用export命令直接修改PATH的值,配置MySQL进入环境变量的方法:

export PATH=/home/uusama/mysql/bin:$PATH
 
# 或者把PATH放在前面
export PATH=$PATH:/home/uusama/mysql/bin

注意事项:

生效时间:立即生效
生效期限:当前终端有效,窗口关闭后无效
生效范围:仅对当前用户有效
配置的环境变量中不要忘了加上原来的配置,即$PATH部分,避免覆盖原来配置
Linux环境变量配置方法二:vim ~/.bashrc
通过修改用户目录下的~/.bashrc文件进行配置:

vim ~/.bashrc
 
# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin

注意事项:

生效时间:使用相同的用户打开新的终端时生效,或者手动source ~/.bashrc生效
生效期限:永久有效
生效范围:仅对当前用户有效
如果有后续的环境变量加载文件覆盖了PATH定义,则可能不生效
Linux环境变量配置方法三:vim ~/.bash_profile
和修改~/.bashrc文件类似,也是要在文件最后加上新的路径即可:

vim ~/.bash_profile
 
# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin

注意事项:

生效时间:使用相同的用户打开新的终端时生效,或者手动source ~/.bash_profile生效
生效期限:永久有效
生效范围:仅对当前用户有效
如果没有~/.bash_profile文件,则可以编辑~/.profile文件或者新建一个
Linux环境变量配置方法四:vim /etc/bashrc
该方法是修改系统配置,需要管理员权限(如root)或者对该文件的写入权限:

# 如果/etc/bashrc文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/bashrc
 
vim /etc/bashrc
 
# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin

注意事项:

生效时间:新开终端生效,或者手动source /etc/bashrc生效
生效期限:永久有效
生效范围:对所有用户有效
Linux环境变量配置方法五:vim /etc/profile
该方法修改系统配置,需要管理员权限或者对该文件的写入权限,和vim /etc/bashrc类似:

# 如果/etc/profile文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/profile
 
vim /etc/profile
 
# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin

注意事项:

生效时间:新开终端生效,或者手动source /etc/profile生效
生效期限:永久有效
生效范围:对所有用户有效
Linux环境变量配置方法六:vim /etc/environment
该方法是修改系统环境配置文件,需要管理员权限或者对该文件的写入权限:

# 如果/etc/bashrc文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/environment
 
vim /etc/profile
 
# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin

注意事项:

生效时间:新开终端生效,或者手动source /etc/environment生效
生效期限:永久有效
生效范围:对所有用户有效
Linux环境变量加载原理解析
上面列出了环境变量的各种配置方法,那么Linux是如何加载这些配置的呢?是以什么样的顺序加载的呢?

特定的加载顺序会导致相同名称的环境变量定义被覆盖或者不生效。

环境变量的分类
环境变量可以简单的分成用户自定义的环境变量以及系统级别的环境变量。

用户级别环境变量定义文件:~/.bashrc、~/.bash_profile
系统级别环境变量定义文件:/etc/bashrc、/etc/bash_profile、/etc/environment
另外在用户环境变量中,系统会首先读取~/.bash_profile文件,如果没有该文件则读取~/.bash_login,如果也没有该文件,则读取~/.profile,根据这些文件中内容再去读取~/.bashrc。

测试Linux环境变量加载顺序的方法

为了测试各个不同文件的环境变量加载顺序,我们在每个环境变量定义文件中的第一行都定义相同的环境变量UU_ORDER,该变量的值为本身的值连接上当前文件名称。

需要修改的文件如下:

/etc/environment
/etc/profile
/etc/profile.d/test.sh,新建文件,没有文件夹可略过
/etc/bashrc,或者/etc/bash.bashrc
~/.bash_profile,或者~/.profile
~/.bashrc
在每个文件中的第一行都加上下面这句代码,并相应的把冒号后的内容修改为当前文件的绝对文件名。

export UU_ORDER="$UU_ORDER:~/.bash_profile"

修改完之后保存,新开一个窗口,然后echo $UU_ORDER观察变量的值:

uusama@ubuntu:~$ echo $UU_ORDER
$UU_ORDER:/etc/environment:/etc/profile:/etc/bash.bashrc:/etc/profile.d/test.sh:~/.profile:~/.bashrc
可以推测出Linux加载环境变量的顺序如下:

/etc/environment
/etc/profile
/etc/bash.bashrc
/etc/profile.d/test.sh
~/.profile
~/.bashrc

Linux环境变量文件加载详解

由上面的测试可容易得出Linux加载环境变量的顺序如下:

系统环境变量 -> 用户自定义环境变量
/etc/environment -> /etc/profile -> ~/.profile

打开/etc/profile文件你会发现,该文件的代码中会加载/etc/bash.bashrc文件,然后检查/etc/profile.d/目录下的.sh文件并加载。

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
 
if [ "$PS1" ]; then
 if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
  # The file bash.bashrc already sets the default PS1.
  # PS1='\h:\w\$ '
  if [ -f /etc/bash.bashrc ]; then
   . /etc/bash.bashrc
  fi
 else
  if [ "`id -u`" -eq 0 ]; then
   PS1='# '
  else
   PS1='$ '
  fi
 fi
fi
 
if [ -d /etc/profile.d ]; then
 for i in /etc/profile.d/*.sh; do
  if [ -r $i ]; then
   . $i
  fi
 done
 unset i
fi
其次再打开~/.profile文件,会发现该文件中加载了~/.bashrc文件。

# if running bash
if [ -n "$BASH_VERSION" ]; then
  # include .bashrc if it exists
  if [ -f "$HOME/.bashrc" ]; then
  . "$HOME/.bashrc"
  fi
fi
 
# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
从~/.profile文件中代码不难发现,/.profile文件只在用户登录的时候读取一次,而/.bashrc会在每次运行Shell脚本的时候读取一次。

一些小技巧

可以自定义一个环境变量文件,比如在某个项目下定义uusama.profile,在这个文件中使用export定义一系列变量,然后在~/.profile文件后面加上:sourc uusama.profile,这样你每次登陆都可以在Shell脚本中使用自己定义的一系列变量。
也可以使用alias命令定义一些命令的别名,比如alias rm="rm -i"(双引号必须),并把这个代码加入到~/.profile中,这样你每次使用rm命令的时候,都相当于使用rm -i命令,非常方便。

linux 查找目录或文件


查找目录:find /(查找范围) -name '查找关键字' -type d

查找文件:find /(查找范围) -name 查找关键字

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: