<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>.::Escovando Bits::. &#187; shell script</title>
	<atom:link href="http://escovandobits.wordpress.com/category/linux/shell-script-linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://escovandobits.wordpress.com</link>
	<description>Programação, Linux, tecnologia da informação, dicas, artigos</description>
	<lastBuildDate>Sun, 05 Jul 2009 15:42:47 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='escovandobits.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/ac8d2c79730f1bc1a6ebab006a3670da?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>.::Escovando Bits::. &#187; shell script</title>
		<link>http://escovandobits.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://escovandobits.wordpress.com/osd.xml" title=".::Escovando Bits::." />
		<item>
		<title>Firefox is already running [...]  e meu primeiro Shell Script!</title>
		<link>http://escovandobits.wordpress.com/2008/04/12/firefox-is-already-running-e-meu-primeiro-shell-script/</link>
		<comments>http://escovandobits.wordpress.com/2008/04/12/firefox-is-already-running-e-meu-primeiro-shell-script/#comments</comments>
		<pubDate>Sat, 12 Apr 2008 16:47:59 +0000</pubDate>
		<dc:creator>Mauro Rodrigues</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[shell script]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[firefox is already running]]></category>

		<guid isPermaLink="false">http://escovandobits.wordpress.com/?p=61</guid>
		<description><![CDATA[Muitos usuários de sistemas que precisam logar em um servidor para obterem acesso ao localhost e a seus recursos/pastas pessoais provavelmente já se depararam, com a seguinte mensagem ao abrir o Firefox:


Firefox is already running, but is not responding [...]
(Firefox já está funcionando, mas não está respondendo [...])


Ai você pensa: &#8220;Firefox rodando? De forma alguma, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=escovandobits.wordpress.com&blog=2186857&post=61&subd=escovandobits&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Muitos usuários de sistemas que precisam logar em um servidor para obterem acesso ao <em>localhost</em> e a seus recursos/pastas pessoais provavelmente já se depararam, com a seguinte mensagem ao abrir o Firefox:</p>
<p style="text-align:center;"><img class="aligncenter size-medium wp-image-62" src="http://escovandobits.files.wordpress.com/2008/04/firefox_already_running.jpg?w=400" alt="firefox_already_running" /></p>
<blockquote>
<h5 style="text-align:center;">Firefox is already running, but is not responding [...]</h5>
<h5 style="text-align:center;">(Firefox já está funcionando, mas não está respondendo [...])</h5>
</blockquote>
<p style="text-align:justify;">
<p style="text-align:justify;">Ai você pensa: &#8220;Firefox rodando? De forma alguma, acabei de me logar!&#8221;</p>
<p style="text-align:justify;">Pois é, quando se é apenas usuário basta chamar alguém para resolver. Mas agora eu estou do lado da administração da rede, e tenho que solucionar esse tipo de imprevisto para os usuários frequentemente. E diga-se de passagem: Ô coisa chata de ser feita viu&#8230;</p>
<p style="text-align:justify;">Bom juntando a necessidade de aprender Shell Script com a situação criei um script para corrigir esse problema do firefox, meu primeiro Script!!! Então leia mais!</p>
<p style="text-align:justify;"><span id="more-61"></span></p>
<p style="text-align:justify;">Geralmente esse problema acontece quando usuários de sistemas que utilizam login em servidores, para disponibilizar as pastas pessoais via <a title="NFS" href="http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/custom-guide/ch-nfs.html" target="_blank">NFS</a>, terminam abruptamente uma seção, devido a uma queda de energia ou <em>reset</em>, finalizando o Firefox de forma inesperada. Pode acontecer também do seu profile ter sido apagado, ou as permissões de acesso setadas equivocadamente; Nesses dois casos certifique-se se sua pasta profile ainda está no local correto e se está com permissões adequadas</p>
<p style="text-align:justify;">Bom para resolver a situação basta remover um arquivo (oculto) do seu <em>profile</em>, chama-se <em>parentlock</em> o dito cujo! Ele serve para dizer que o profile já está em uso, evitando assim que haja uma inconsistência de dados caso o profile esteja sendo usado em modo compartilhado.</p>
<p style="text-align:justify;">A Solução é simples, mas vai dizer para o usuário que ele precisa deletar o arquivo oculto, dentro da pasta oculta mozilla, dentro da <em>home</em> dele&#8230; Só se vê aquelas caras de: &#8220;Hein?! o.Ô&#8221;.</p>
<p style="text-align:justify;">Então resolvi criar o script! Ele faz a remoção desse arquivo e em seguida abre o Firefox sem maiores problemas! O maior desafio nisso estava em chegar até a pasta do profile, pois ela possui nomes aleatórios seguindo o padrão:</p>
<p style="text-align:justify;"><em>XXXXXXXX.default</em> [onde X pode ser qualquer letra, maiúscula ou minúscula, ou número].</p>
<p style="text-align:justify;">Na hora pensei: Expressões regulares! Pois existe um arquivo em <em>~/.mozilla/firefox/ </em>chamado <em>profiles.ini </em>que contém o nome da pasta que guarda o perfil do usuário. Mas pra quem ainda é iniciante, fica complicado&#8230; Não desisti!! Criei tempo, não sei da onde, e li boa parte de um livro de Shell! Aprendi o básico do uso de expressões regulares usando o sed e ed. O resultado você pode baixar clicando aqui: <a title="Ressucita Firefox!" href="http://www.box.net/shared/f5toiim1w0" target="_blank">ressucita_firefox.sh</a></p>
<p style="text-align:justify;">O arquivo está comentado, mas não custa deixar registrado aqui também:</p>
<p style="text-align:justify;"><em><span style="color:#ff00ff;">sed</span> <span style="color:#ff6600;">&#8216;<span style="color:#ff0000;">/Path=/!d&#8217; </span></span><strong><span style="color:#000000;">~/.mozilla/firefox/profiles.ini &gt;temp1</span></strong></em></p>
<p style="text-align:justify;">A expressão acima deleta (d) todas as linhas que não contenham <em>&#8216;Path=&#8217; </em>do arquivo <em>profiles.ini</em> e salva o que sobrar em temp1. Note que o uso da expressão não escreve no arquivo <em>profiles.ini</em>, portanto não se preocupe em fazer um <em>backup</em> prévio dele.</p>
<p style="text-align:justify;"><em><span style="color:#ff00ff;">sed</span> <span style="color:#ff0000;">&#8217;s/Path=//&#8217;</span> <strong>temp1 &gt; temp2</strong></em></p>
<p style="text-align:justify;">A seguir, a expressão substitui (s) a primeira ocorrência de <em>&#8216;Path=&#8217;</em>, em temp1, por nada (//), salvando em temp2, onde teremos apenas o nome da pasta profile! Note também que fiz uso de 2 arquivos temporários (temp1 e temp2) pois uma propriedade do shell é que ao se direcionar o fluxo de dados para um arquivo, este será criado ou destruído, impedindo portanto coisas como:</p>
<p style="text-align:justify;"><em><span style="color:#ff00ff;">sed</span> <span style="color:#ff0000;">&#8217;s/Path=//&#8217;</span> <strong>temp1 &gt; temp1</strong></em></p>
<p style="text-align:justify;">Finalmente a remoção:</p>
<p style="text-align:justify;"><em><span style="color:#ff00ff;">rm</span> <strong>~/.mozilla/firefox/</strong>`<span style="color:#ff00ff;">cat</span> <strong>temp2`/.parentlock</strong></em></p>
<p style="text-align:justify;">Repare que utilizei `<span style="color:#ff00ff;">cat</span> temp2` no meio do arquivo afim de obter o endereço da pasta profile. Os acentos agudos, utilizados como apóstrofos, são imprescindíveis para o bom funcionamento pois indicam que a expressão dentro deles deve ser resolvida antes da expressão em geral (no caso rm). Assim temos na verdade a linha a seguir sendo utilizada:</p>
<p style="text-align:justify;"><em><span style="color:#ff00ff;">rm</span> <strong>~/.mozilla/firefox/XXXXXXXX.default/.parentlock</strong></em></p>
<p style="text-align:justify;">E a remoção dos arquivos temporários criados:</p>
<p style="text-align:justify;"><em><span style="color:#ff00ff;">rm</span> <strong>temp1 temp2</strong></em></p>
<p style="text-align:justify;">Uma mensagem opcional:</p>
<p style="text-align:justify;"><em><span style="color:#800080;">echo</span> <strong>&#8220;O Firefox sera iniciado em 3 segundos&#8230;&#8221;</strong></em></p>
<p style="text-align:justify;">E a execução do Firefox:</p>
<p style="text-align:justify;"><em><span style="color:#800080;">exec</span> <strong>firefox</strong></em></p>
<p style="text-align:justify;">É simples, eu sei, mas muito útil, e poupa tempo! Agora basta disponibilizá-lo com um ícone do Firefox e pronto, o usuário nem notará a diferença! Não se esqueça de permitir a execução utilizando o chmod!</p>
<p style="text-align:justify;">Fico por aqui, e aguardo qualquer tipo de sugestão de melhorias! Abraços!</p>
<p style="text-align:justify;">
<p style="text-align:justify;">
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/escovandobits.wordpress.com/61/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/escovandobits.wordpress.com/61/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/escovandobits.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/escovandobits.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/escovandobits.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/escovandobits.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/escovandobits.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/escovandobits.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/escovandobits.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/escovandobits.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/escovandobits.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/escovandobits.wordpress.com/61/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=escovandobits.wordpress.com&blog=2186857&post=61&subd=escovandobits&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://escovandobits.wordpress.com/2008/04/12/firefox-is-already-running-e-meu-primeiro-shell-script/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a25d3fe89c0b28671ec6b0a9d7324102?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Mauro Rodrigues</media:title>
		</media:content>

		<media:content url="http://escovandobits.files.wordpress.com/2008/04/firefox_already_running.jpg?w=400" medium="image">
			<media:title type="html">firefox_already_running</media:title>
		</media:content>
	</item>
	</channel>
</rss>