Linux-知识点

linux下运行文件为什么要加./

原因是可执行文件的目录没有包含在环境变量PATH中,linux系统只会搜索PATH变量,而当前目录不再PATH环境变量中的话,就需要加上"./"来指定到当前目录下去查找应用程序了;而windows下却可以,是因为系统会搜索PATH变量和当前目录。


linux下如何查看某软件是否已安装

因为linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否安装了。总结起来就是这样几类:

  1. rpm包安装的,可以用rpm -qa看到,如果要查找某软件包是否安装,用 rpm -qa | grep “软件或者包的名字”。
    [root@hexuweb102 ~] rpm -qa | grep ruby
  2. yum方法安装的,可以用yum list installed查找,如果是查找指定包,命令后加 | grep “软件名或者包名”;
    [root@hexuweb102 ~] yum list installed | grep ruby
  3. 以deb包安装的,可以用dpkg -l能看到。如果是查找指定软件包,用dpkg -l | grep “软件或者包的名字”;
    [root@hexuweb102~]dpkg -l | grep ruby
  4. 如果是以源码包自己编译安装的,例如.tar.gz或者tar.bz2形式的,这个只能看可执行文件是否存在了,
    上面几种方法都看不到这种源码形式安装的包。如果是以root用户安装的,可执行程序通常都在/sbin:/usr/bin目录下。

说明:其中rpm yum 是Redhat系linux的软件包管理命令,dpkg是debian系列的软件包管理命令


Linux编译安装中configure、make和make install各自的作用

这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤。AUTOMAKE和AUTOCONF是非常有用的用来发布C程序的东西。

  • ./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。
  • make是用来编译的,它从Makefile中读取指令,然后编译。
  • make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。
1. configure

这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,比如代码:
./configure --prefix=/usr
上面的意思是将该软件安装在 /usr 下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在 /usr/share(而不是默认的/usr/local/share)。
同时一些软件的配置文件你可以通过指定 --sys-config= 参数进行设定。有一些软件还可以加上 --with、--enable、--without、--disable 等等参数对编译加以控制,你可以通过允许 ./configure --help 察看详细的说明帮助。

2. make

这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。
make 的作用是开始进行源代码编译,以及一些功能的提供,这些功能由他的 Makefile 设置文件提供相关的功能,比如 make install 一般表示进行安装,make uninstall 是卸载,不加参数就是默认的进行源代码编译。
使用make就是要将源码编译成为可以被执行的可执行文件,而这个可执行文件会放置在目前所在的目录之下,尚未被安装到预定安装的目录下。

3. make install

这条命令来进行最后的安装,make会依据Makefile这个文件里面关于install的选项,将之前所编译完成的数据安装到默认的目录中,这一步一般需要你有 root 权限(因为要向系统写入文件)。


shell命令:( [{AA} ] && echo "success" || echo "fail" )

如果变量AA存在,将输出 success 提示信息;否则输出 fail 提示信息。


如何在Linux下启动Tomcat像Windows一样把启动信息打印到控制台

可以通过运行./catalina.sh run启动,就可以像windows中一样查看tomcat启动信息了。


查看Linux端口占用,并kill掉相关进程

方式一:lsof命令

  1. 查看占用端口进程的PID:
lsof -i:{端口号}
image.png
  1. 根据PID kill掉相关进程:
kill -9 {PID}
image.png

方式二:netstat命令

  1. 查看占用端口进程的PID:
netstat -tunlp|grep {port}
image.png
  1. kill方法如上
kill -9 {PID}

补充:根据程序名查看对应的PID

  1. 用ps命令(zb专用):
ps -ef | grep {programName}
kill -9 {PID}
  1. 用pgrep命令:
    pgrep命令的p表明了这个命令是专门用于进程查询的grep。
pgrep {programName}
kill -9 {PID}

推荐阅读更多精彩内容